だいぶ遅れた新年一発目の更新もWordPress備忘録。
今回はページスラッグとカスタム投稿のタームスラッグを自動的に取得して、一致したタームの記事一覧をページに自動表示させる方法です。
テンプレートにタームスラッグを直接指定すれば簡単に出来るけど、それだとクライアントが自分でページやタームを追加した場合、テンプレートの修正が必要になっちゃう。
だから、自動的にページとタームのスラッグを取得し、一致したタームの記事一覧が表示されるようにしたいのだ。
説明が難しい!
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も分からないクライアントさん。
極力簡単にサイトが更新されるような仕組みを作らないと駄目。
それが難しい。
いろんなパターンの壁にぶつかり解決方法が分かる度に「考えた人スゲー!」ってなり、「どーすれば書けるようになるんだべ?」と自信を無くす今日この頃…。
COMMENTS:コメ無し(つд・)エーン
CATEGORY:WORDPRESSTAGS:wordpress