たくそのみー?たーむ??分かるようでいざコードを書こうとすると手が止まる、そんな私のためのメモです。
ワードプレスが持つ投稿タイプ・タクソノミー・タームとは
ワードプレスがデフォルトで持ってるもの、自分で追加できるものがあります。
投稿タイプ
投稿タイプ、と書かれていれば、以下のものを指します。
- 固定ページ
- 投稿
- カスタム投稿タイプ
固定ページや投稿は馴染みがあるものなので迷うことはないかと思います。
「カスタム投稿タイプ」はプラグインやfunctions.phpをいじって独自で追加できる投稿の種類です。
タクソノミー
ワードプレスがデフォルトで持つタクソノミーは、「カテゴリー」と「タグ」。
なんだかややこいいですが、タクソノミーという言葉は以下のものを指しています。
- カテゴリー
- タグ
- カスタムタクソノミー(カスタム分類)
「カスタムタクソノミー」はデフォルトではなく独自で新しく追加した分類のことです。
ターム
- タクソノミーの内容(カテゴリのような分類名の1つ1つ)
タクソノミーに紐づいている更に細かい分類のこと・・・と理解しています。
カテゴリに紐づいた個々の記事のことではなく、タクソノミーのなかのさらなるカテゴリー名、というか・・・
ややこしいですね!
実際の使い方
関数の引数にタクソノミーやターム、投稿タイプなど必要な情報を指定しなければいけません。
実際の例を見てみましょう。
get_terms()において
例えば、任意のカスタム投稿タイプのタームを取得したいとき、get_terms( )を使います。
get_terms( 'event' );
のように、タクソノミーのスラッグ(‘event’)を指定することで、そのタクソノミーに属するタームを取得できます。
自作関数で使う
例えばこんな、任意の記事を取得する自作関数があるとします。
function get_specific_posts( $post_type, $taxonomy = null , $term = null, $number = -1 )
これを実際に使う時の引数はこんな感じ。
get_specific_posts( 'post', 'category', 'news', 3);
$post_type:’post’(投稿タイプ:投稿)
$taxonomy:’category’(タクソノミー:カテゴリー)
$term:’news’(ターム:カテゴリーの中の1つ ‘news’ を指定)
$number:3件取得
$taxonomy:’category’(タクソノミー:カテゴリー)
$term:’news’(ターム:カテゴリーの中の1つ ‘news’ を指定)
$number:3件取得
ということ。
カテゴリー「news」に属する投稿記事は3件取得できます。
同じ関数の使用例もう1つ。
get_specific_posts('daily', 'event', 'festival', $number = -1);
$post_type:’daily’(投稿タイプ:カスタム投稿タイプの名前)
$taxonomy:’event’(タクソノミー:カスタム投稿タイプに作った分類(タクソノミー)名)
$term:’festival’(上記タクソノミーの中のタームの名前)
$number:全件取得
$taxonomy:’event’(タクソノミー:カスタム投稿タイプに作った分類(タクソノミー)名)
$term:’festival’(上記タクソノミーの中のタームの名前)
$number:全件取得
カスタム投稿タイプ「daily」の中の「event」に紐づくターム、「festival」の記事を全取得。ということになります。
プラグイン、Custom Post Type UIを使ってカスタム投稿タイプを作成している場合、ダッシュボードのプラグイン設定ページ内にある「投稿タイプを表示」タブでスラッグ名を確認できます。
もう1つ同じ関数を使った例
今度はtaxonomy.phpの中で関数を使った場合です。
get_specific_posts( 'daily', 'event', $term, -1 );
$post_type:’daily’(投稿タイプ:カスタム投稿タイプの名前)
$taxonomy:’event’(タクソノミー:カスタム投稿タイプに作った分類(タクソノミー)名)
$term:$term(taxonomy.phpでは変数$termに自動的に閲覧しているタームのスラッグが入る!!)
$number:全件取得
$taxonomy:’event’(タクソノミー:カスタム投稿タイプに作った分類(タクソノミー)名)
$term:$term(taxonomy.phpでは変数$termに自動的に閲覧しているタームのスラッグが入る!!)
$number:全件取得
ターム一覧から任意のタームをクリックすると、自動でそのタームに紐づいた記事が表示されます。