2018.06.25

WordPress

wordpressの投稿をトリガーにして別の投稿タイプの記事を呼び出した話

紐で作ったハートのイメージ

今回はwordpressのプラグインadvanced custam fieldの投稿オブジェクトフィールドが便利だった!というお話です。
とあるwordpress案件を制作中に各地のチェーン店お客様の声という2つの投稿タイプを作りました。
その際求められた仕様が、各地のチェーン店に記事を投稿すると、お客様の声内のカスタムフィールドに店舗を選択するフィールドが現れるというものでした。つまり投稿タイプAの記事をトリガーに投稿タイプBを分類できるようにしたい、Aに投稿するとBの選択肢が勝手に増える、を実現してほしいとのこと。
今回はその機能を実現した際に使った方法を紹介します。

投稿タイプをまたいでカスタムフィールドを連携させたい

当初クライアントから求められたのは、各地のチェーン店内に、そのお店のお客様の声から3記事を掲載したいとのことでした。なのでお客様の声にカテゴリーやタグでトリガーを設定しようとしましたが、それでは各地のチェーン店の記事を増やすたびにお客様の声のカテゴリーも増やす作業をせねばならず、クライアントが記事を更新するにあたって作業が煩雑になることがわかりました。
各地のチェーン店に記事を投稿すると投稿した店舗名がお客様の声に選択肢として表示されるようにしたい。これを実現するためにadvanced custam fieldの投稿オブジェクトフィールドを利用しました。

投稿オブジェクトフィールドで記事を呼び出す

お客様の声投稿タイプ内で、カスタムフィールド「投稿オブジェクト」の「投稿タイプで絞り込み」で投稿タイプ各地のチェーン店を選びます。返り値のフォーマットを今回は投稿IDにします。するとお客様の声の編集画面に下のようなプルダウンメニューが表示されます。

記事名を選んでいるイメージ

準備はこれで完了です。お客様の声の編集画面で店舗名を選ぶと、その店舗の記事IDが紐付けられ、クライアントが記事を投稿することで勝手に選択肢が増えるフィールドができました。

投稿IDで投稿タイプの記事を呼び出す

各地のチェーン店のテンプレートファイルに以下の記述をします。

<?php $postid = get_the_ID(); ?>
<?php
$args =	array(
 'posts_per_page'   => 3, 
 'orderby'          => 'menu_order',
 'order'            => 'ASC', 
 'post_type'        => 'voice', 
 'post_status'      => 'publish', 
 'meta_key' => 'voice_storename', //カスタムフィールドのキー
 'meta_value' => $postid, //カスタムフィールドの値
);
$wp_query = new WP_Query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>

<?php
$voice_store = get_field('voice_store');
$store_page = get_post( $voice_store );
$store_tit = $store_page->post_title;
?>
<p><?php echo $store_page ?></p>

<?php endwhile;  ?>

$argsの中のmeta_keymeta_valueがポイントです。カスタムフィールドのメタタグを絞り込み条件に加えられる記述ですが、値の呼び出しをget_the_ID()その記事のIdにしています。
つまり「店舗の記事IDの情報を持ったお客様の声の投稿から3件」を「同じ記事IDの投稿内に呼び出す」というコードになっています。

これでお客様の声への投稿を各地のチェーン店側で店舗別に呼び出すコードの完成です。

まとめ

2つの投稿タイプをまたいで関連づける少しややこしい動作でしたが、プランが決まってしまえばやりたいことは明白でした。advanced custam fieldにそれを実現できる機能があったおかげで、大変助かった、というお話でした。何かの際にお役に立てばと思います。

SHARE

この記事の筆者

Web&Soundクリエイター 田村 培修

Web&Soundクリエイター 田村 培修

楽器とパソコンのキーボードを使い分ける当社のマルチクリエイター。e-sportsに興味津々であれこれ情報を収集中。

WEBSITE DESIGN REQUEST

ホームページ制作・リニューアルの
ご相談はお気軽に

TEL 06-6537-9941 平日 9:00〜19:00

〒550-0012 大阪府大阪市西区立売堀2-5−41

ホームページ制作を相談する