ページと同じスラッグを持つカテゴリー(ターム)の記事一覧を自動表示させる方法

2016年01月28日 木曜日 00時29分

スラッグが同じ記事一覧を表示させる方法

だいぶ遅れた新年一発目の更新もWordPress備忘録。
今回はページスラッグとカスタム投稿のタームスラッグを自動的に取得して、一致したタームの記事一覧をページに自動表示させる方法です。

テンプレートにタームスラッグを直接指定すれば簡単に出来るけど、それだとクライアントが自分でページやタームを追加した場合、テンプレートの修正が必要になっちゃう。
だから、自動的にページとタームのスラッグを取得し、一致したタームの記事一覧が表示されるようにしたいのだ。
説明が難しい!

[ad#ad-big]

tax_queryとesc_attr($post->post_name)

      <?php
      $args = array(
      'post_type' => 'recipe', //カスタム投稿スラッグ
      'posts_per_page' => '5', //表示件数
      'tax_query' => array( array (
        'taxonomy' => 'recipe_cat', //タクソノミースラッグ
        'field' => 'slug', //対象
        'terms' => esc_attr($post->post_name) //タームを取得
      ) )
      );
      $recipe_post = get_posts($args);
      if($recipe_post ) : foreach($recipe_post as $post) : setup_postdata( $post ); ?>
      
      <p><a href="<?php the_permalink(); ?>"><?php wp_title(); ?></a></p>

      <?php endforeach; ?>
      <?php endif; wp_reset_postdata(); ?>

これがその記述。
3行目のpost_typeでカスタム投稿のスラッグを指定。
5行目のtax_queryでtaxonomy、field、termsを指定。
8行目のtermsではスラッグを直接指定するのではなくesc_attr($post->post_name)で自動的に取得させる。

これにより、表示させているページと同じスラッグを持つタームの記事一覧が表示されます。

自分で作るのは簡単だけど…

自分で運営するサイトならこんな苦労は不要なんだよね。
ページやタームが増える都度、テンプレートを修正すれば簡単なんだよ。

でも、お仕事の場合、サイトを運営するのはCSSもWordPressも分からないクライアントさん。
極力簡単にサイトが更新されるような仕組みを作らないと駄目。
それが難しい。

いろんなパターンの壁にぶつかり解決方法が分かる度に「考えた人スゲー!」ってなり、「どーすれば書けるようになるんだべ?」と自信を無くす今日この頃…。

関連記事

コメントさんきゅ

コメントはまだありません...(つд・)エーン

コメントどーぞ

© 2010 - 2024 南国スキーぶろぐ