トップ / コーディング / 【WordPress】Advanced Custom Fields(ACF)の関連フィールドから現在の投稿と未公開の投稿を除外する方法

2018.12.24

【WordPress】Advanced Custom Fields(ACF)の関連フィールドから現在の投稿と未公開の投稿を除外する方法

みなさん、こんにちは。

WordPressのカスタムフィールド用プラグインはもっぱらAdvanced Custom Fields(ACF)を使用しています。
ACFに「関連」という便利なフィールドがあります。

今回はその「関連」をさらに使いやすくするカスタマイズをご紹介します。

Contents

ACFの関連フィールドのカスタマイズする点

関連フィールドは上画像のように投稿一覧(左側)からクリックするだけでオリジナルのリスト(右側)を作成することができます。
一般的な用途としてはこの投稿に関連した投稿を選択して一覧表示する形になるかと思います。

そういった用途の時に不便な点が2点あります。

  1. 投稿一覧に現在の投稿が含まれている。
  2. 投稿一覧に公開前の投稿が含まれている。

この2種類の投稿を除外しようと思います。

ACFの関連フィールドのカスタマイズ方法

ACFにはカスタマイズ出来るように「acf/fields/relationship/query」というフィルターフックが用意されているのでこれを利用します。

テーマ内の「function.php」に以下のように記述します。

/********************************************************************
 * ACFの関連で未公開の投稿を除外
 * ACFの関連で現在の投稿を除外
********************************************************************/
function custom_acf_relationship($args, $field, $post_id){
	$args["post_status"] = "publish";
	$args['post__not_in'] = array( $post_id );
	return $args;
}
add_filter( 'acf/fields/relationship/query', 'custom_acf_relationship',10,3 );

これだけで完了です。

$args["post_status"] = "publish";

この部分が「公開中の投稿」だけという指定になります。

$args['post__not_in'] = array( $post_id );

この部分が「現在の投稿を除外」という指定になります。

まとめ

記事が増えてくると管理が大変になってくるので、使いやすくカスタマイズしていくことも大切ですね

参考サイト

https://dandashokai.com/1334
https://www.nxworld.net/wordpress/wp-acf-custom-relationship-query-exclude-post.html

この記事が気に入ったらいいね!で
最新記事をお届けします

記事が気に入ったらシェアしよう