ラノベ・ガジェットのコメットキャットの趣味ブログ
Enterで検索 Escで閉じる
Advanced Custom Fieldのカスタマイズの紹介です。
投稿オブジェクトは、固定ページや記事に別の投稿オブジェクトを紐づけることができます。似たような項目で、「関連」というものがあり投稿オブジェクトとの違いは複数選択可能がどうかしか違いがありません。
関連を使うことで、複数の投稿オブジェクトを紐付けすることができます。
投稿オブジェクトの設定はとても簡単で、選択可能な投稿タイプと、タクソノミーを選びます。投稿オブジェクトを選択しないとメディア等も選択肢に出てくるのでかなりめんどくさいことになります。
タクソノミーは、個々のターム情報を選択します。
設定した内容を取得すると、WP_Queryで取得した際と同じような形でWP_Postオブジェクトが中に入っています。
array(2) { [0]=> object(WP_Post)#~~ (~~) { // 投稿オブジェクトの情報がここに入ってます } [1]=> object(WP_Post)#~~ (~~) { // 投稿オブジェクトの情報がここに入ってます } }
ACFを追加して、投稿オブジェクトを設定しただけだと下書き記事が選べる状態になっています。選んだとしても表示されないので問題ありませんが、ここに選択肢として出てくるのは正直邪魔ですね。
なので消しましょう。
Advanced Custom Fieldsのプラグインファイルから下記のファイルの166行目にフィルターがあるのでこれを使います。
/advanced-custom-fields/includes/fields/class-acf-field-post_object.php ↓ 166行目 $args = apply_filters(’acf/fields/post_object/query’, $args, $field, $options[’post_id’] );
functions.phpに下記の記述を追加します。post_statusのパラメータを「publish」にすることで公開済みの投稿のみを選択肢に表示することができます。
add_filter( ’acf/fields/post_object/query’, ’custom_acf_post_object_query’, 10, 4 ); function custom_acf_post_object_query( $args, $field, $post_id ){ $args [’post_status’] = ’publish’; return $args; }
※上記の記述は一部全角や大文字になっているのでコピペする際はご注意を。
これで下書き記事はもう出ません。他にも記事のパラメーターによって出し分けたい場合は書き方をベースに変更してみてください。
この記事は役に立ちましたか?
静的HTMLの一部にWordPressの記事を表示する方法
Yoast SEO タイトル・ディスクリプションにカスタムフィールドの値を入れる方法
SNSのアイコン・ロゴの配布場所【2023年11月最新版】
【React】Error: Objects are not valid as a React childの解決策
【WordPress公式テーマ】コンセプトと今後のアップデート予定を紹介
【React】Reactをyarnを使って導入する方法をメモ
保存した記事はありません