ACFの投稿オブジェクト参照で、現在の投稿と同じ言語のもののみを出力させる【Bogo・ACF】

多言語プラグインのBogoを使用していると、多言語の投稿も、普通の投稿と同じ扱いなので、
特に日本語と中国語で、タイトルが全く一緒になってどの言語か見分けがつかなくなることがあります。

このままでは利便性が悪いので、各言語の投稿に絞り込めるよう、クエリーを制御します。

実装

ACF側で投稿オブジェクトのクエリーを制御するフックが用意されているのでそれを使用します。
ACF | acf/fields/post_object/query

1
2
3
4
5
6
7
8
9
10
function my_post_object_query( $args, $field, $post_id ) {
$locale = get_post_meta( $post_id, '_locale', true );

$args['post_status'] = 'publish';
$args['meta_key'] = '_locale';
$args['meta_value'] = $locale;

return $args;
}
add_filter('acf/fields/post_object/query', 'my_post_object_query', 10, 3);

↑このコード例ではすべての投稿オブジェクトに反映されます

管理画面でget_locale()すると、現在のユーザーが選択している言語情報で取得してしまうので、
記事に紐付いているBogoの_localeのカスタムフィールドを確認して、
Bogoのmeta_keyに代入し、絞り込んでいます。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×