カスタムフィールドの値によって、RSSフィードを作成する
2013-06-03
カスタムフィールドのキー「 rss 」 が「yes」の記事のみ、RSSフィードする際の備忘録。
愚かな私は、
<?php while( have_posts()) : the_post(); ?> <?php if(post_custom('rss') == 'yes'): ?> <item> <title><?php the_title_rss() ?></title>
としていました。
これでは、まず10件RSSフィードさせる記事を持ってきてから、キー「rss」の値が「yes」のものを選別してしまうので、フィードの記事数が10件を切ることになります。
よって、上記のような振り分けでなく、記事をRSSフィードに持ってくる際に、選別する必要があります。
functions.phpに、
function rssFilter($query) { if ($query->is_feed) { $args = array( array( 'key' => 'rss', 'value' => 'yes' ) ); $query->set( 'meta_query', $args ); } return $query; } add_filter('pre_get_posts','rssFilter');
とすることにより、選別された規定数のフィード記事を吐き出してくれる訳です。
デザインや表示上の分岐は、if(~で振り分ければよいが、記事の取捨選択はクエリーを使うという勉強になりました。