事象に関しまして、固定ページのカスタムフィールドが取得できないようになっております。
sugiuraさん
下記のソースを該当ページが読まれてるテンプレートのphpに読ませたとき、どんな値がかえってきますか?
<?php
$field_group = SCF::get( 'group' );//実際のフィールド名に書き換えてください!
echo '<pre>' ;
var_dump($field_group ) ;
echo '</pre>' ;
?>
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);
?>
photographer hiro. さん
ご返信ありがとうございます。
ご提案いただいた方法でもやはりうまく行きませんでした。
結局、固定ページではプレビューをしないということになったのとしばらく入院していたためにご返信が遅くなりまして申し訳有りませんでした。
この度はご協力頂きましてありがとうございました。
@sugiura さん
結構前に自分も似たような現象があって、フォーラムに書き込んだことがありました。
トピック: Smart Custom Fieldsプラグイン使用時にアイキャッチ画像のプレビューができな « サポートフォーラム — WordPress
そのときの原因は、
1. アイキャッチ画像の保存タイミングが公開タイミングと違うことがプラグイン側で考慮されていなかった
2. 自分の書いたコードの問題(WordPressデフォルトの関数でなく、プラグインで用意されている関数を使う必要がある)
という感じだったのですが、1.は改善されているはずなので、2.がどうかですね。
あとは、「一旦下書き保存などしてからプレビュー」した場合と、「保存せずにプレビュー」した場合で違いがあるかどうかも分かると良いかと思います。
ちなみに、is_previewなどの分岐は必要ないはずです。