メインコンテンツまでスキップ

【ACF】関連カスタムフィールドで自身の下書き記事を取り除く

WordPressカスタマイズでよく利用されるものとして、投稿画面にカスタムフィールドを追加することがあります。自作するには大変なカスタムフィールドを簡単に追加できるプラグインで有名なものの一つにAdvanced Custom Fieldsがあります。

このプラグインの中に関連記事を表示選択できる関連フィールドがありますが、デフォルトでは下書き記事を選択することが出来ます。ただ、下書き記事を選択させたくない、そもそも選択肢として表示させたくないことが多いかと思います。その場合、下記のフックを使用することで取り除くことが出来ます。

function relationship_args_filter($args, $field, $post_id)
{
//ステータスが公開になっている記事を取得
$args['post_status'] = array('publish');
return $args;
}
add_filter('acf/fields/relationship/query', 'relationship_args_filter', 10, 3);

このプラグイン内のフックで取得時のwp_queryを操作することが出来るので、取得する内容をお好みで変更することが出来ます。 他にも記事の投稿後の記事の編集時、既に追加されている記事のため自分自身が選択できてしまいますが、下記のように追加することで、自身の記事を取り除くことが出来ます。

$args['post__not_in'] = array($post_id);
// $post_idは上記のソースの場合の引数です