【WordPress】固定ページでカテゴリごとの投稿一覧を表示したい
問題
固定ページの中で、あるカテゴリに所属する投稿一覧と、あるカテゴリに所属する投稿一覧と……を表示したい。
答え
通常通り固定ページの中に、ちょっとしたプログラムが必要な処理を入れるなら、ショートコードを作ると簡単。
というわけで、指定した条件の投稿を一覧表示するショートコード。
ソース
function shortcode_get_posts($atts) { extract(shortcode_atts(array( 'q' => '', ), $atts)); $posts = get_posts(html_entity_decode($q)); $html = '<ul>'; foreach ($posts as $p) { $html .= '<li>'; $html .= date('Y年n月j日 ', strtotime($p->post_date)); $html .= '<a href="' . get_permalink($p->ID) . '">' . $p->post_title . '</a>'; $html .= '</li>'; } $html .= '</ul>'; return $html; } add_shortcode('get_posts', 'shortcode_get_posts');
使用例
<div class="news">[get_posts q="category=3&numberposts=5"]</div> <div class="press">[get_posts q="category=5&numberposts=5"]</div> <div class="newitem">[get_posts q="post_type=item&numberposts=8"]</div>
ショートコードは、「wpautop() および wptexturize() による投稿の整形適用後にパースされます。」とのこと。ショートコードの処理をする関数の方では、パラメータが「category=3&numberposts=5」のような文字列になっている。整形される前の文字が欲しかったら、元に戻す処理(html_entity_decodeなど)をする。
日付、リンク、タイトル以外にも出力可能。
出力されるHTMLは適宜変更してご利用されたし。
コメント