タグ1つで記事内に特定カテゴリの記事一覧を表示する方法
投稿記事内で記事一覧を表示したいときには、ショートコード機能を使います。
ショートコードとは、[ ]で囲まれたタグを記事本文に入力することで
表示の際、特定の文字やコードに置き換えてくれるWordPressの便利機能です。
今回はこのショートコードを使って、記事本文に1つタグを追加するだけで
特定カテゴリの記事一覧を表示できるようにします。
記事のテンプレートに get_posts やらごにょごにょ書き入れる必要はありません。
functions.php の編集、作成
まずは functions.php を用意します。現在使っているテーマファイル内になければ、
同名ファイルを作成しましょう。
記事の中で特定カテゴリの一覧を表示するショートコードを作成
<?php function get_category_posts($atts, $content = null) { extract(shortcode_atts(array( 'limit' => '4', 'cat' => '', 'order' => 'DESC', 'orderby' => 'post_date' ), $atts)); global $post; $tmppost = $post; $get_cat_posts = get_posts('numberposts='. $limit. '&order='. $order. '&orderby='. $orderby. '&category='. $cat); $cat_list_html = '<ul>'; foreach ( $get_cat_posts as $post ) { setup_postdata($post); $cat_list_html .= '<li><a href="'. get_permalink(). '">'. the_title('', '', FALSE). '</a></li>'; } $cat_list_html .= '</ul>'; $post = $tmppost; return $cat_list_html; } add_shortcode('list', 'get_category_posts'); ?>
引数を渡せるタイプのショートコードを作りました。
渡せるものは、
limit: 表示件数
cat: カテゴリID
order: 昇順か降順か(デフォルト: 降順)
orderby: 並び順(デフォルト:投稿日時順)
cat: カテゴリID
order: 昇順か降順か(デフォルト: 降順)
orderby: 並び順(デフォルト:投稿日時順)
の4つです。
記事内に一覧を表示してみる
では、実際に記事本文に表示してみます。
<h3>新着情報</h3> [list cat="3" limit="3"]
上の例ではカテゴリID3の記事を3件(投稿日付順の降順で)表示します。
できました!記事内に一覧が表示されました。
関連記事を表示するときなどにも使えそうですね。
関連記事