LoginSignup
9

More than 5 years have passed since last update.

Wordpressでカスタム投稿の特定のタームだけ出力する

Last updated at Posted at 2016-06-14

まえがき

半年近く Wordpress 触ってなかったら色々忘れてハマったのでメモ。
最終的に Codex を、ちゃんと見たら一発で解決したんだけど。。。

投稿データの配列を作成する

Wordpressでカスタム投稿タイプを作って、
特定のタクソノミーに属する特定のタームだけを出力したいという時は、
get_posts に下記のような配列を渡す。

php:example.php
<?php 
$customPostArg = array(
  'posts_per_page' => 5,
  'post_type'      => 'customposts',  // カスタム投稿タイプ名
  'tax_query'      => array(
    array(
      'taxonomy' => 'customposts_taxonomy',  // カスタムタクソノミー名
      'field'    => 'slug',  // ターム名を term_id,slug,name のどれで指定するか
      'terms'    => 'customposts_taxonomy_terms' // タクソノミーに属するターム名
    )
  )
);
$customPosts = get_posts($customPostArg);
?>

投稿データの配列に基いてループを作成する

あとは下記のように foreach で回してあげればイケる。
※記事へのパーマリンクとタイトルだけのシンプルなものだけど。

php:example.php
<?php if($customPosts): foreach ($customPosts as $post): setup_postdata( $post );  ?>
  <div><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<?php endforeach; endif; ?>

foreach 終わったあとに wp_reset_postdata(); しなきゃダメなのかな??
その辺はちょっとわからんです。

参考サイト

カスタム投稿タイプとカスタムタクソノミーまとめ(KoToRi Blog)
正直、なんとな〜くで作業していた、カスタム投稿タイプに付随するそれぞれのワードはここで理解した。

WordPress Codex日本語版(テンプレートタグ/get_posts)
お世話になってます。
本来ここちゃんと見れば大体の事はできるようなサイトになってるとは思うんだけどね。
英語読めれば英語版のが最新情報が掲載されていそうだけど、英語わかんねぇです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9