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


9

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

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

フィードのサイズのAPI設定が見つかりませんでした...ここでヘルプを歓迎します。

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


Stephen HarrisとCodeMonkeyの回答はどちらも特定の1つのカテゴリでは機能しませんか?そうでなければ、両方の答えがうまくいきます!1つのカテゴリでしか機能しないのはなぜですか?
mahatmanich

回答:


8

を使用して、条件付きで50に設定できるはずです(カテゴリーのフィードの場合)。残念ながら、この未解決のTracチケットがあります。pre_get_postsposts_per_page

唯一の回避策は、SQLクエリの一部に直接フックしpost_limitsて置き換える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;
}

ちょっとStephen調べます。ええと、実際には常にフィードのカテゴリのすべてのエントリが必要です。ブログページでのみ、バックエンドで設定した制限を制限したいのですが、どうすればよいですか。
mahatmanich 2012年

その場合、そうするべきreturn "";では"LIMIT $page_start, $per_page"ありません。
スティーブンハリス

コードについて少し説明してもらえますか?それが私があなたがここで提供しているものを私が望んでいるものかどうか、私にはよくわかりません。
mahatmanich

したがって、カテゴリフィードの場合、すべての投稿を返したいのでLIMIT、クエリの一部は必要ありません。上記のフィルターを使用すると、LIMITパーツを空白の文字列に置き換えることができるため、結果のSQLはすべての投稿をフェッチします。
スティーブンハリス

1
はい、私は作るお勧めのプラグイン、それ(のうちwpcandy.com/teaches/how-to-create-a-functionality-plugin
スティーブン・ハリス

2
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;
}

あなたがする必要があるのは、この機能を編集し、カテゴリー分類法によって分類法を差し替え、スラグを多くのカテゴリーに編集することだけです...


コードを説明してもらえますか?
mahatmanich 2012年

特定の分類法が見つかった場合(例では$ wp_query-> query_vars ['custom_taxonomy'] custom_taxonomy)、フィードにトリガーする単純なSQLクエリフィルター($ wp_query-> query_vars) ['custom_taxonomy'] == 'slug')。このすべてが発生し、trueである場合(site.com/your-custom-feed-for-category.xml)、フィードに制限なしの結果が返されます($ SQLステートメントをLIMIT値で除算すると、最後のLIMITなしで返されます)演算子...制限なし
。RSS

そのコードはどこにドロップしますか?私のテーマのfunctions.php?
mahatmanich 2012年

functions.phpは完全に適合します。ただし、前にスラグとカスタム分類の名前を変更します。テスト前にブラウザーのキャッシュをクリアします(RSSフィードはブラウザーによってキャッシュされます)。
Oleg Butuzov

キャッシュをご利用いただきありがとうございます。それは一種の作品ですが、それでも少なくとも1つのカテゴリではフィード内のすべての投稿を取得できません。他のカテゴリでは機能します...
mahatmanich
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.