投稿インターフェイスを分かりやすくする上で、アイキャッチはどうかなと思う次第ですが、必要な場合があったので、ACFカスタム投稿のメインビジュアル画像登録をアイキャッチと連動させました。
今更な情報かもしれませんが、ネットを調べるとすぐ出てきます。
ただ、そのまま使うとDBが汚れてしまいます。
何気なくDBを覗いていたら重複した状態で何度も再登録されてしまっているので、下記のコードの方が良いかと思います。
何が違うかと言いますと、3行目の「update_post_meta」の部分が、「add_post_meta」となっています。これだとメインビジュアル画像登録を変更した場合に、追加登録されてしまいます。
function my_acf_update_value ($value, $post_id, $field, $original) {
if ($value) {
update_post_meta($post_id, '_thumbnail_id', $value);
}
return $value;
}
add_filter('acf/update_value/name=カスタムフィールド名', 'my_acf_update_value', 10, 4);
update_post_meta() は、指定した投稿に存在するカスタムフィールドの値を更新します。add_post_meta() の代わりとしても使うことができます。この関数はまず、$post_id で ID を指定した投稿に $meta_key を持つカスタムフィールドが存在することを確認します。もし存在しなければ代わりに
2021年1月24日 (日) 00:27 UTCadd_post_meta( $post_id, $meta_key, $meta_value )
を実行し、その結果を返します。
URL:https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/update_post_meta
ちなみにACFのカスタム投稿のフィールドがグループの中の画像だった場合、上記コードではうまく動作しません。
acf/update_value/name=カスタムフィールド名
このカスタムフィールド名の指定を調整しても動作しないので、下記のように書き換えればOKです。
function my_acf_update_value ($value, $post_id, $field, $original) {
if ($field["name"] == "グループ名_カスタムフィールド名" && $value) {
update_post_meta($post_id, '_thumbnail_id', $value);
}
return $value;
}
add_filter('acf/update_value', 'my_acf_update_value', 10, 4);