質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

8164閲覧

wordpress smart custom fieldがプレビューで表示されない不具合

SSaka

総合スコア96

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2016/12/07 15:45

smart cusotm fieldsを利用して運用しているのですが、
一般投稿のプレビュー表示の際に、テンプレートで表示しているカスタムフィールドが表示できません。

http://2inc.org/blog/2014/10/09/4426/
の紹介の通り、プレビューでも見える想定で認識していたのですが、
考慮点などあるのでしょうか。

lang

1$shop_id = SCF::get('shop_id'); 2$shopmeta = getShopData($shop_id);

getShopDataはfunction内で定義した関数です。
テストで

lang

1<?php echo($shop_id); ?>

をしたのですが、下書き+プレビューでは表示されません。
公開設定に一度入れると表示されるようです。

何か手を加えれば表示できるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

http://www.warna.info/archives/2502/

この記事のコードを利用して解決できました。

lang

1function get_preview_id( $post_id ) { 2 global $post; 3 $preview_id = 0; 4 if ( $post->ID == $post_id && is_preview() && $preview = wp_get_post_autosave( $post->ID ) ) { 5 $preview_id = $preview->ID; 6 } 7 return $preview_id; 8} 9 10 11function get_preview_postmeta( $return, $post_id, $meta_key, $single ) { 12 if ( $preview_id = get_preview_id( $post_id ) ) { 13 if ( $post_id != $preview_id ) { 14 $return = get_post_meta( $preview_id, $meta_key, $single ); 15 } 16 } 17 return $return; 18} 19add_filter( 'get_post_metadata', 'get_preview_postmeta', 10, 4 ); 20 21 22function save_preview_postmeta( $post_ID ) { 23 global $wpdb; 24 25 if ( wp_is_post_revision( $post_ID ) ) { 26 $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE post_id = $post_ID" ); 27 $post_metas = apply_filters( 'preview_post_meta_keys', array( 'meta' ) ); 28 foreach ( $post_metas as $post_meta ) { 29 foreach ( $_POST[$post_meta] as $meta_id => $meta_arr ) { 30 add_metadata( 'post', $post_ID, $meta_arr['key'], $meta_arr['value'] ); 31 } 32 } 33 do_action( 'save_preview_postmeta', $post_ID ); 34 } 35} 36add_action( 'wp_insert_post', 'save_preview_postmeta' );

投稿2016/12/07 16:11

SSaka

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問