WordPress

Advanced Custom Fieldsのフィールド値がプレビュー画面で表示されない問題の解決方法

記事内に商品プロモーションを含む場合があります

WordPressのカスタムフィールドプラグイン「Advanced Customf Fields」を使用して、カスタムフィールドを管理しているとき、プレビュー画面ではフィールドの値が表示されない問題が発生しました。

この記事ではこの問題の解決方法を解説します。

プレビュー時に正しい投稿IDが渡されないのが原因

Advanced Custom Fieldsを使ってフィールド値を取得するときに、ACFが取得している投稿IDとプレビュー時の投稿IDに違いがあるときに、この不具合が発生します。

解決方法としては、functions.phpに以下のコードを追加します。

function fix_post_id_on_preview($null, $post_id)
{
  if (is_preview()) {
    return get_the_ID();
  } else {
    $acf_post_id = isset($post_id->ID) ? $post_id->ID : $post_id;
    if (!empty($acf_post_id)) {
      return $acf_post_id;
    } else {
      return $null;
    }
  }
}
add_filter('acf/pre_load_post_id', 'fix_post_id_on_preview', 10, 2);

※参考
Preview solution !
https://support.advancedcustomfields.com/forums/topic/preview-solution/page/3/#post-134967

===

コレカラウェブはWordPress・SEOを中心にお仕事を承っております。ポートフォリオを掲載していますので、こちらも併せてご覧ください。まずはお気軽にお問い合わせくださいませ。

「いいね!」と思ったら、クリックお願いいたします<m(__)m>
にほんブログ村 IT技術ブログ WordPressへ にほんブログ村 IT技術ブログ Web製作へ にほんブログ村 その他生活ブログ フリーランス(ITエンジニア系)へ
WordPressランキング Webサイト・CGIランキング フリーランスランキング

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA