Advanced custom fields(ACF)の関連をカスタマイズする

段田です。
今日はWordPressのAdvanced custom fieldsプラグインの話です。

WordPressでは有名なプラグイン「Advanced custom fields」。
このプラグインはWordPressのカスタムフィールドを利用するのに非常に便利なプラグインです。

今回は「Advanced custom fieldsとは」という基本的な話は省いて、
カスタマイズの話をします。

※Advanced custom fieldsはカットバックドロップターン並みに長いので、以降はACFで略します。

AAスポンサーリンク

関連

ACFのカスタムフィールドは既存のカスタムフィールド(テキストフィールド、テキストエリアなど)にはない、独自のカスタムフィールド項目が用意されています。

その中で「関連」というカスタムフィールドがあります。

そもそも、この関連をなんのために使うのかというと、主に関連記事機能として使います。(たとえばあわせて読みたい記事)
関連記事機能は回遊率上げるのに有効なので、わりと受託案件でも求められる機能で、
このカスタムフィールド使うことで、さっくり実装できたりします。
(要件によりますが・・)

acf_re1

ざっくりですが、関連カスタムフィールドの設定方法を説明をします。

一通りカスタムフィールドの設定すると、投稿画面に上の画像のような項目が表示されます。
左側のリストにはブログ記事が表示されます。(別の投稿タイプにすることも可能)

acf_re2

左側のリストから記事を選択すると、右側に記事が移動します。
これで投稿画面の公開ボタンを押して、記事を保存・公開すると、
記事ページなどでカスタムフィールドを使った場合、右側にセットした記事の情報を取得することができます。
これにより、各記事で誘導記事を任意で選択し、表示することができるのです。

(伝わったかな・・・)

難点

こんな便利な関連カスタムフィールドですが、1点難点があります。

acf_re3

上記画像の赤枠を見てもらうとわかるのですが、下書きの記事も選択リストとして、表示されてしまいます。
Hello World!4とサンプルページの間に入っている(draft)が入った記事が下書き中の記事です。

人によっては、このままで良いと思うのですが、私自身は記事選択する際に邪魔になってしまうため、
公開済みの記事だけを表示したいのです。

カスタマイズしました!

さて、すごく前置きが長くなりましたが、
今回は、関連カスタムフィールドの記事リストを公開済みの記事だけ表示するようにカスタマイズします。

ACFは親切に記事リストをカスタマイズできるように「acf/fields/relationship/query」というフィルターを用意しています。

/**
 * ACFの関連で公開の記事しか出さないように処理
 * @param $args WP_Queryの引数。ACFの関連で使う引数情報が格納されている。
 * @param $field カスタムフィールド名
 * @param $post_id 対象の記事ID
 * @return mixed
 */
function custom_acf_relationship($args, $field, $post_id){
   $args["post_status"] = "publish";
   return $args;
}
add_filter( 'acf/fields/relationship/query', 'custom_acf_relationship',10,3 );

デフォルトだと第一引数の配列post_statusにはanyと設定されているため、
下書きの記事も表示されています。

なので、上のコードでpublishに変更します。

acf_re4

これによりHello World!4とサンプルページに入っていた下書きの記事がなくなり、公開済みの記事のみになりました。
WP_Queryの引数を利用できますので、他の条件指定もできます。

最後に

今回の説明は以上です。
ACFは今回紹介した関連以外にも地図やリピーターなど様々なカスタムフィールドが用意されていますので、
また改めてACFの説明ができればと思います。

一歩先にいくWordPressのカスタマイズがわかる本
相原 知栄子 大曲 仁
翔泳社
売り上げランキング: 2,109
【段田商会】はゲーム実況をやっています
スポンサーリンク
Advanced custom fields(ACF)の関連をカスタマイズする
この記事をお届けした
段田商会の最新ニュース情報を、
いいねしてチェックしよう!

フォローする