web-dev-qa-db-ja.com

カテゴリの個々のRSSフィードエントリの長さ

私は、wpのカテゴリからrss2フィードを取得する方法、すなわちカテゴリ名の後ろに/feedを追加する方法を知っています。ただし、これを行うと、そのフィードのすべてのエントリがRSSに含まれるわけではありません。これは、管理バックエンドでフィード制限を50に設定したためです。

各カテゴリ/フィードにフィード長を個別にプログラムで設定できるかどうかを知りたいのですが。

フィードのサイズに対するAPI設定が見つかりませんでした。

ご協力いただきありがとうございます。

9
mahatmanich

あなたは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;
}
8
Stephen Harris
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;
}

必要なのは、この関数を編集し、分類法をカテゴリ分類法に置き換え、スラッグをカテゴリに合わせて編集するだけです...

2
Butuzov