サポート » プラグイン » smart custom field で設定した値をプレビューで表示できない

  • 解決済 sugiura

    (@sugiura)


    お世話になります。

    smart custom fields を使用させて頂いておりますが、プレビュー画面で値が取得できません。
    また、投稿自体を保存してあった場合、繰り返しフィールド以外は
    <?= post_custom(‘hoge’) ?>
    の様にしているので取得できますが、SCF::get(‘group’)で値を取得できないようで、その後で回しているforeachで
    Warning: Invalid argument supplied for foreach() …
    とエラーが出てしまいます。

    class_exists(‘SCF’)では1が返ってくるのですが、保存されていても値が取得できないようです。
    公開画面では問題なく取得できています。

    何かプレビューに関してのフィルターフックなどあり見落としていたら大変申し訳ないのですが、もしご存知の方がいらっしゃればなかなか解決に至らないのでご教授いただけませんでしょうか。
    宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • スレッド開始 sugiura

    (@sugiura)

    事象に関しまして、固定ページのカスタムフィールドが取得できないようになっております。

    sugiuraさん

    下記のソースを該当ページが読まれてるテンプレートのphpに読ませたとき、どんな値がかえってきますか?

    
    
    <?php
    
    $field_group = SCF::get( 'group' );//実際のフィールド名に書き換えてください!
    
    echo '<pre>' ;
    var_dump($field_group ) ;
    echo '</pre>' ;
    
    ?>
    
    
    スレッド開始 sugiura

    (@sugiura)

    photographer hiro. さん

    ご返信ありがとうございます。
    preview画面ですと、SCF::get(‘group’) は NULL を返してきます。

    カスタムフィールドの定義は下記の様にfunctions.phpに書いておりまして、固定ページごとで分けるためにslugで分岐しています。

    
    function add_page_fields($settings, $post_type, $post_id, $meta_type) {
      if($post_type === 'page') {
        $post = get_post($post_id);
        if($post->post_name === 'about') {
          $Setting = SCF::add_setting('fields', '概要');
          $items = array(
            array(
              'name'      => 'name',
              'label'     => '名前',
              'type'      => 'text'
            ),
            array(
              'name'      => 'content',
              'label'     => '内容',
              'type'      => 'textarea'
            ),
            array(
              'name'      => 'location',
              'label'     => '所在地',
              'type'      => 'text'
            ),
          );
    
          $Setting->add_group('group', false, $items);
          $settings[] = $Setting;
        }
      }
      return $settings;
    }
    add_filter('smart-cf-register-fields', 'add_page_fields', 10, 4);
    

    実際には分岐は固定ページの数だけあります。
    昨日、これが原因かと思い、
    if($post->post_name === ‘about’)
    のpost_nameの分岐をなくした所、previewでも表示されました。現在この分岐を活かしたままプレビューに反映させるにはどうするかを色々と試しておりますが、まだ解決には至っておりません。

    sugiuraさん

    もし、不都合がなければ、ページテンプレートを作成し、ページテンプレートの条件分岐をする
    もしくは、他のページで同じフィールドを使用していなけれな「if(SCF::get(‘group’) )」みたいな条件分岐はいかがでしょうか。

    プレビューがなにか悪さしてるんですかね。
    「if(is_preview() == true) || 」みたいなのを併用するのもなにか違う気がしますし。。。

    すみません、あまり答えになっていませんね。

    
    <?php
    
    function add_page_fields($settings, $post_type, $post_id, $meta_type) {
    global $post; //$post_typeを取得してる時点で$postは存在するので、global関数を用いました
      if($post_type === 'page' && is_page_template('page-about.php') ) {
          $Setting = SCF::add_setting('fields', '概要');
          $items = array(
            array(
              'name'      => 'name',
              'label'     => '名前',
              'type'      => 'text'
            ),
            array(
              'name'      => 'content',
              'label'     => '内容',
              'type'      => 'textarea'
            ),
            array(
              'name'      => 'location',
              'label'     => '所在地',
              'type'      => 'text'
            ),
          );
    
          $Setting->add_group('group', false, $items);
          $settings[] = $Setting;
      }
      return $settings;
    }
    add_filter('smart-cf-register-fields', 'add_page_fields', 10, 4);
    
    ?>
    
    スレッド開始 sugiura

    (@sugiura)

    photographer hiro. さん

    ご返信ありがとうございます。
    ご提案いただいた方法でもやはりうまく行きませんでした。
    結局、固定ページではプレビューをしないということになったのとしばらく入院していたためにご返信が遅くなりまして申し訳有りませんでした。

    この度はご協力頂きましてありがとうございました。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    @sugiura さん

    結構前に自分も似たような現象があって、フォーラムに書き込んだことがありました。

    トピック: Smart Custom Fieldsプラグイン使用時にアイキャッチ画像のプレビューができな « サポートフォーラム — WordPress

    そのときの原因は、

    1. アイキャッチ画像の保存タイミングが公開タイミングと違うことがプラグイン側で考慮されていなかった
    2. 自分の書いたコードの問題(WordPressデフォルトの関数でなく、プラグインで用意されている関数を使う必要がある)

    という感じだったのですが、1.は改善されているはずなので、2.がどうかですね。
    あとは、「一旦下書き保存などしてからプレビュー」した場合と、「保存せずにプレビュー」した場合で違いがあるかどうかも分かると良いかと思います。

    ちなみに、is_previewなどの分岐は必要ないはずです。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「smart custom field で設定した値をプレビューで表示できない」には新たに返信することはできません。