AdvancedCustomFields(ACF)で作ったカスタムフィールドが固定ページや投稿のプレビュー時に効かないんだけど、どうして。。。

wordpress

固定ページや投稿の管理画面でプレビューした時にACFで作ったカスタムフィールドの値が反映されない問題。。。以前は動作していたがACFバージョンアップしたら動かなくなってた問題を解決です。

解決

functions.phpにフィルターフックを追記する。add_filter()

フィルターフックでプレビューモードにおいてACFのフィールドが正しく動作するようにするようです。

function fix_acf_field_post_id_on_preview($post_id, $original_post_id){
    if (is_string($post_id) && str_contains($post_id, 'option')) {
        return $post_id;
    }
    if (is_string($original_post_id) && str_contains($original_post_id, 'block')) {
        return $post_id;
    }
    if (is_preview()) {
        return get_the_ID();
    }
    return $post_id;
}
add_filter('acf/validate_post_id', __NAMESPACE__ . '\fix_acf_field_post_id_on_preview', 10, 2);

元情報はこちら、ACFのサポートページにありました=>https://support.advancedcustomfields.com/forums/topic/custom-fields-on-post-preview/

なんでしょ。プレビューモード時に正しい投稿IDを返してそれに紐づくpost_metaフィールドとか取得してプレビュー表示するって感じでしょうか。

コメント

タイトルとURLをコピーしました