ある日、Advanced Custom fieldsでカスタムフィールドを作っていました。

何個か作っているうちに、同じ値・内容を使うフィールドが重複していることに気が付きました。

・・・作る前に気づけよ・・・と思いますが。

用途を考えている時に頭の中やメモでは整理しきれなくなって、とりあえずカスタムフィールドだけでも作ってみるかと見切り発車したのが原因ではあります。

内容としては、カスタム投稿タイプで使用しつつ、そこに入力した内容を他のカスタムフィールドに引用したり・・・という感じです。

分かりやすく言い換えると、例えばECサイトで商品の情報を登録するカスタム投稿タイプを作ったとして。

その商品名であったり商品コード、単価といった情報は、登録するカスタム投稿タイプ以外でも使いたい、というような状況です。

他のカスタム投稿タイプでも同じような内容を入力することになるし、こういったデータは入力する人によっての表記揺れが一番の問題になるよな、とか考えてました。

そんな時に便利だなと思ったのが、Advanced Custom fields(以下、「ACF」と表記します。)のフィールドグループの一つである、「投稿オブジェクト」です。

フィールドタイプ「投稿オブジェクト」

ACFはカスタムフィールドを手軽に作れて便利なのですが、分かりやすい基本フィールドの使用がメインになったりします。

ほとんどは

「カスタムフィールドを作る」

→「テンプレートページで呼び出す」

という流れなので問題はないんですが。

今回の場合は、

「Aカスタムフィールドを作る」

→「Bカスタムフィールドに挿入する」

→「AとBのカスタムフィールドの値をテンプレートページで呼び出す」

といった流れを想定していたものとなります。

それをやりやすいのが、フィールドタイプ「投稿オブジェクト」でした。

フィールドタイプを設定するドロップリストの「関連」の中にあります。

簡単にこのフィールドを説明すると、「投稿されている記事の情報を取得するフィールド」と言えます。

このまま「投稿オブジェクト」の設定を見ていきます。

ラベル等の基本的な部分については、ACFでのカスタムフィールドの作り方については変わらないので、以前の記事をご覧頂ければと思います。

「投稿オブジェクト」独自で設定する内容は、選べる投稿の絞り込み方と、返り値をどうするかです。

「投稿タイプで絞込」「タクソノミーで絞込」

「投稿オブジェクト」のフィールドでは、投稿のタイトルが選択項目としてドロップダウンリスト表示されます。

なので、ここで投稿の内容を呼び出したい投稿タイプ・タクソノミーが決まっていれば、選んだ投稿タイプ・タクソノミーで投稿された記事のタイトルが表示されます。

前もって使う投稿の関係性が決まっていれば、選んでおくと便利ですね。

「返り値のフォーマット」

ここで、フィールドタイプ「投稿オブジェクト」で使用する内容を決めます。

選択できるものは「投稿オブジェクト」「投稿ID」の2つです。

「投稿オブジェクト」

ワードプレスでは、投稿のデータはWP_Postというクラスで管理されています。

これを元に投稿に関わるデータを配列で取得することができます。

結構色々なデータを取得することができるので、迷ったらこれがオススメです。

クラスリファレンス/WP_Post

呼び出せる内容は以下の通りです。

呼び出すときに使う名前内容
ID投稿のID
post_author投稿作成者のユーザーID
post_name投稿のスラッグ
post_type投稿タイプ
post_title投稿のタイトル
post_date公開日時
post_date_gmtGMTでの公開日時
post_content投稿の本文全体
post_excerpt投稿の抜粋
post_status投稿の公開ステータス
comment_statusコメントの公開ステータス
ping_statusピンバック/トラックバックのステータス
post_password閲覧パスワード
post_parent親投稿のID
post_modified更新日時
post_modified_gmtGMTでの更新日時
comment_count投稿のコメント数
menu_order順序値
WP_Postのメンバー変数(引用:クラスリファレンス/WP_Post)

こちらの内容はCodexに記載されていたものを引用したものです。

このような投稿に関わる情報を取得することができます。

テンプレートファイル上で使用する時も簡単で、例えば投稿タイトルを取得するとすると、

get_field(‘投稿オブジェクトのカスタムフィールド名’)->post_title

とすれば取得できます。「post_title」の部分は上の表の取得したいものに変更することで、取得することができます。

「投稿ID」

返り値を「投稿ID」にすると、選んだ投稿の投稿IDのみを取得することができます。

投稿オブジェクトを選んだ場合の、

get_field(‘投稿オブジェクトのカスタムフィールド名’)->ID

と同じ動きですが、投稿IDのみを利用する事が決まっていれば、こちらの方が記述量を減らせますね。

「投稿オブジェクト」フィールドを使って他の投稿のカスタムフィールドの値を取得する

ACFの「投稿オブジェクト」の説明がすんだので、先ほど書いたやりたい事をやってみます。

先ほどは条件分岐のように書きましたが、一言で言うとこの見出しのようになります。

ACFで作成したカスタムフィールドの値を取得する場合は、

get_field(‘カスタムフィールド名’,’投稿ID’);

と書けば可能です。

つまり、投稿オブジェクトからIDを取得し、それを使って目的の投稿内のカスタムフィールドの値を取得する。

ということになります。

コードで書いてみると、

こんな感じです。

投稿タイプtestBのループ内で投稿の一覧表示のように使うとすれば、

という様に書くことで、動的に投稿IDを取得し表示することができます。

幅が広がります

今回はワードプレスで作成した投稿を、データベースのように扱うにはどうすれば良いか?ということを考えていた時の備忘録のような感じです。

カスタムフィールドは便利なので増やしてしまいがちなところもありますが(自分だけかもしれません笑)。

同じような入力を他のカスタムフィールドで行う場合、「投稿オブジェクト」を使う事で入力を簡略化できるかもしれません。

これだけでも便利ですが、カスタムフィールドの自動入力と合わせるともっと便利だったりします。

次はそのことについて書こうかなと考えています。

  ワードプレス関係の他の記事はこちらからどうぞ!  

「ホームページは必要なのだろうか・・・?」

SNSや様々なWEBサービスの登場で、ホームページ以外にもネット上で活動する方法はどんどん増え続けています。
そのようにサービスが増えても、ホームページは中心に据えられる数少ない必要不可欠なツールであると、当社は考えています。
 
株式会社 東建工業-インターネット事業部-では、ホームページ制作のご依頼を随時お受けしております。
 
・企業ホームページの作成
・ブログサイトの作成
・ECサイトの作成
 
など、ご要望に合わせて作成します。ご相談頂いた内容を踏まえて、こちらからご提案もさせて頂きます。
新規ホームページの作成だけでなく、すでに使用されているホームページのリニューアルについてのご相談もお受けしております。
ホームページ開設後の運営・運用についてのご相談もお受けしております。
 
お気軽にお問合せ下さい!
 

 
 

株式会社東建工業-インターネット事業部-
イラスト制作例

当社はオリジナルイラストの制作を行っております。
制作例を一部掲載していますので、是非ご覧ください!

当社のデザイン作成について

当社はWEB制作に加え、デザイン作成と制作も行っております。

・チラシ、パンフレット等の紙媒体に使用するデザインと制作
・オリジナルデザインでのクリアホルダーの制作
・オリジナルデザインでのステッカー、シールの制作
・オリジナルデザインでのプリントTシャツの制作
などなど・・・

様々なデザインに関する制作をご依頼頂けます。
詳しくは当社のデザイン作成についてのブログ記事をご覧ください。

前の記事

次の記事

こちらも読まれています

お問い合せ

この記事の内容や当社についてのお問い合わせはこちらのフォームをご覧下さい。

ご利用前に当社のプライバシーポリシー免責事項をお読み下さい。

送信ボタンを押された時点で、当社プライバシーポリシー又は、免責事項にご同意頂いたものとみなします。