WordPressでカテゴリー毎の投稿を一覧表示するショートコードを作成する

WordPressの固定ページに指定したカテゴリーidの投稿リストを表示するショートコードです。

functions.phpへ以下のコードを追加して、ショートコードを定義します。

カテゴリー毎の投稿を一覧表示するショートコード

// 投稿を取得する
// num_p:表示数
// id:カテゴリーID
// [p_list id=2 num_p=3]
function get_post_list($atts)
{
  $a = shortcode_atts(array(
    'num_p' => 20,
    'id' => 1
  ), $atts);
  $args = array(
    'numberposts'  => $a['num_p'],
    'category'    => $a['id']
  );
  $my_posts = get_posts($args);

  if (!empty($my_posts)) {
    $output =  '<ul>';
    foreach ($my_posts as $p) {
      $output .= '<li><a href="' . get_permalink($p->ID) . '">'
        . $p->post_title . '</a></li>';
    }
    $output .= '<ul>';
  }
  return $output ?? '<strong>条件に一致する投稿がありません</strong>';
}
// ショートコード
add_shortcode('p_list', 'get_post_list');

例) ショートコード使用1

[p_list id=8]

HTML編集で記載します。[get_p_list]でショートコードを指定し、引数として[id]の”8″を渡しています。カテゴリーIDが8の投稿リストを表示します。

例)ショートコード使用2

 [p_list id=8 num_p=3]

上記は、カテゴリーidの”8″の投稿取得して、投稿3つを表示します。

例) 実際の表示