私は、wpのカテゴリからrss2フィードを取得する方法、すなわちカテゴリ名の後ろに/feed
を追加する方法を知っています。ただし、これを行うと、そのフィードのすべてのエントリがRSSに含まれるわけではありません。これは、管理バックエンドでフィード制限を50に設定したためです。
各カテゴリ/フィードにフィード長を個別にプログラムで設定できるかどうかを知りたいのですが。
フィードのサイズに対するAPI設定が見つかりませんでした。
ご協力いただきありがとうございます。
あなたはpre_get_posts
を使うことができて(カテゴリへのフィードであることを条件として)posts_per_page
を50に設定できるはずです。残念ながら、これ 未解決のtracチケット があります。
唯一の回避策はpost_limits
にフックし、SQLクエリのLIMIT
部分を直接置き換えることです。
add_action('post_limits','wpse71759_category_rss_limit',10,2);
function wpse71759_category_rss_limit($limit, $query){
if( $query->is_feed() && $query->is_category() ){
$paged = $query->get('paged') ? (int) $query->get('paged') : 1;
$per_page = 50;
$page_start = ($paged-1)*$per_page;
return "LIMIT $page_start, $per_page";
}
return $limit;
}
add_filter('query', 'sql_query_feed_filter');
function sql_query_feed_filter($sql){
global $wp_query;
if ($wp_query->is_feed == true && isset($wp_query->query_vars['custom_taxonomy']) && in_array($wp_query->query_vars['custom_taxonomy'], array('slug1','slug2')) ){
if (strpos($sql, 'SELECT SQL_CALC_FOUND_ROWS') !== false){
list($sql,) = explode('LIMIT', $sql);
}
}
return $sql;
}
必要なのは、この関数を編集し、分類法をカテゴリ分類法に置き換え、スラッグをカテゴリに合わせて編集するだけです...