カスタム投稿とカスタムタクソノミー。カスタム投稿機能を使う投稿ページ機能を拡張した「カスタム投稿タイプ」Wordpressには「固定ページ」と「投稿ページ」がありますが、投稿ページを拡張したカスタム投稿という機能があります。上記の例では「chef」と「cource」という名前のカスタム投稿タイプがある状態です。WordPressに最初からある機能「投稿ページ」には、前回紹介したような「カスタムフィールド」という機能を追加できます。カスタム投稿は投稿ページとは違う新たな投稿ページの仕様(デザイン・レイアウト)を作るための機能です。自分の好きな項目を設定することで自由な一覧・詳細ページが作れます。■サイトを更新管理する方が、HTMLの知識がない。■標準の投稿とは別の投稿フォーマットを作りたい。このような場合にカスタム投稿は便利です。管理画面で記事を作成カスタム投稿タイプ用のテンプレートファイルを作るcssを記述functions.phpで設定まずfunctions.phpに、カスタム投稿ページでどんな項目を入れたいかを設定します。関数の作成まず関数のオプションの設定を作成します。配列で必要なオプションを入れていきます。{}自由に関数名をつけましょう。$labels,ラベル関係はオプションが多いので、更に連想配列を変数$labelsに入れて分けています。管理画面での表示名などを設定していきます。__('CHEF')という書き方も見られますが、ロケール(多言語化)に応じて自動翻訳してくれる関数の書き方なので、いったん普通の書き方で大丈夫です。'dashicons-coffee',このページでいろんなiconを選択できます。'excerpt',.....],管理画面の記事作成ページで表示するウィジェットを指定しています。必要なものを適宜入れましょう。hierarchicalをtrueにしたらpage-attributesを入れましょう。false,この設定をtrueにすると、記事作成画面が新エディタ(グーテンベルク)で表示されます。初期値がfalseなので旧エディタのままで良い場合は記述しなくても良いです。'パラメーター')カスタム投稿タイプ名とパラメーター(設定値を入れている変数)を登録します。'実行する関数');WordPressがWebサイトを表示させるため順次、特定の処理(アクション)をしていきます。そのアクションにフックさせ、登録している関数を実行します。※フックに関しては後ほど詳しく説明します。initはユーザーのログイン状態がどうなっているかを参照しているタイミングです。ファイル関係はこのようになります。functions.phpを設定した段階で、「設定」→「パーマリンク設定」を表示し、何も変更せずに「変更を保存」ボタンをクリックしましょう。ページを表示させる際に必要な手順となります。管理画面のダッシュボードの左のメニューのアイコンから新規記事を作成します。functions.phpで作った関数の内容が、この図のように表示されます。カスタムフィールドを追加するこれに前回覚えたカスタムフィールドで名前と画像のフィールドを追加しましよう。フィールドグループからシェフというグループを作成し、図の通りのフィールドを追加しましょう。URLにしておきましょう。位置のタブはCHEF投稿に等しい投稿タイプに設定します。管理画面から「シェフを追加」をクリックし、新規記事を作ります。記事の内容は適当に書いてみましょう。シェフの記事を作ります。このような表示になります。本文:私がウスウスと眼を覚ました時、こうした蜜蜂の唸るような音は、まだ、その弾力の深い余韻を、私の耳の穴の中にハッキリと引き残していた。それをジッと聞いているうちに......今は真夜中だな......と直覚した。してどこか近くでボンボン時計が鳴っているんだな......と思い思い、又もウトウトしているうちに、その蜜蜂のうなりのような余韻は、いつとなく次々に消え薄れて行って、そこいら中がヒッソリと静まり返ってしまった。花子」これをもとに3人分のシェフ情報を追加してみましょう。テンプレートを作成するsingle-{カスタム投稿タイプ名}.phpで作成します。$args)でchefと設定したとおりsingle-chef.phpとなります。?></main></div><?phpget_footer();テンプレートファイルは見づらいですが、図解するとこんな感じです。CSSの設定.mainの中に次のcssを追記しましょう。*/}表示してみましょう表示はこんな感じです。何も変更せずに[変更を保存]をクリックしましょう。カスタム投稿タイプ一覧を表示してみましょうsingle-chef.phpに追記して、カスタム投稿タイプ記事に、他のシェフの一覧を出してみましょう。テンプレートに一覧を表示する部分を追記します。<p>関連アイテムはまだありません。WP_Query($args);WordPressはリクエストされたURLに対してデータベースに接続し、画面を表示するデータを自動で取得します(メインクエリ)。そのデータをループさせることをメインループと呼び、標準の投稿ページやカテゴリーページなどを表示する際に使います。(サブループ)させるための方法です。サブクエリは表示させたいデータ取得の条件の指示を引数$argsに指定し、クエリを発行します。必要な知識として、WordPressはページを表示するときに、対象の記事データのすべての情報を$wp_queryというグローバル変数にデータを格納しています。$post->IDのようにIDプロパティを指定するなどして様々なデータを出力できます。どのファイル(コード)からでもアクセスできるデータのこと。?>endwhileループ終了後に必ずwp_reset_postdata()でサブループ内の$postをリセットして、メインループのためにグローバル変数$postを復元しておきます。WP_Query()クラスの違い取得できる情報量の違いで、get_posts()よりWP_Query()のほうがは投稿データの情報を少なくしてあります。単純な一覧表示などはget_posts()で十分です。WP_Query()はより多くのパラメーターが利用でき複雑な処理ができます。軽量な処理を求められるシビアな環境でなければWP_Query()を使って良いかと思います。・引数$argsに投稿を取得するための条件(パラメーター)を設定します。※WP_Queryインスタンスは$the_queryという名前の変数に代入しています。ループ内部で$postsが動いているので、上書きしないように別の名前をつけましょう。アクセスするとこのような表示になります。カスタムタクソノミー機能を使うカスタムタクソノミーについてカスタム投稿タイプを設定してみましたがカテゴリーの機能を追加すればもっと便利になります。カスタム投稿タイプを作った場合は、標準機能以上の分類をしたい場合がほとんどのため、自分でカテゴリーやタグを作ることが多いです。タクソノミーと呼びます。タクソノミーとは分類のことです。標準タクソノミーとは呼ばれません。カテゴリー・タグという名称になります。カスタム投稿の場合はカスタムタクソノミーと呼びます。今回はシェフの個人ページに料理ジャンルと在籍店舗の2つのカテゴリを追加したいと思います。入れる箇所はカスタム投稿タイプの登録をするcreate_post_type()関数の中に追記します。引数:タクソノミーの名前32文字以内で好きな名前をつけましょう。URLや管理画面で表示するときなどに使います。一度ここの名称を設定して管理画面で登録したあとここの名称を変更してしまうと、データが消えてしまうので気をつけましょう。第二引数:対象のpostや投稿タイプ名カスタムタクソノミーを使う投稿ポストタイプを指定します。'typeC')とします。第三引数:パラメータ各種項目の設定をします。設定と実際の画面の関係はこのようになります。福岡を入れてみましょう。名前とスラッグを入れましょう。メニューに設定したカスタムタクソノミーが表示されました。それぞれ3人のシェフに設定してみましょう。カスタム投稿タイプ、カスタムタクソノミーのテンプレートについてカスタム投稿やカスタムタクソノミーのテンプレート関係はこの様になっています。カスタムタクソノミーで作られた要素の一つ一つのことはタームという名称で呼ばれます。fukuoka」がタームとなります。シェフの一覧を表示したい場合はarchive-chef.phpで良いでしょう。仮にカスタムタクソノミー「在籍店舗」の一覧を表示したい場合はtaxonomy-shop.phpというテンプレートを作ります。複数のカスタムタクソノミーがあった場合でも、テンプレートが同一で良い場合は、taxonomy.phpでも良いでしょう。一覧を出す場合はarchive-{カスタム投稿タイプ名}.phpでテンプレートファイルを作成します。カスタム投稿タイプ「chef」の投稿一覧ページを作成し、カスタムフィールドや、アイキャッチ画像、カスタムタクソノミーを表示してみました。)get_post_meta()でカスタムフィールドなどのメタデータが取得できます。カスタムフィールドで設定した「画像」を表示したい場合は、まず画像IDを取得します。カスタムフィールド名「chef_image」は、管理画面のカスタムフィールドで設定した「フィールド名」です。get_post_meta()で取得した画像IDのデータでimg要素(HTML)を生成します。