前提・実現したいこと
wordpressでテンプレートテーマを作成しています。
下の例のように固定ページ編集画面でプラグインを使用せずに、
選択されたデザインテンプレートごとにカスタムフィールドを切り替えて設置・表示させることは可能でしょうか?
例)
固定ページ編集画面にて
デフォルトテンプレート選択時にはカスタムフィールド非表示
デザインテンプレート1を選択したときにカスタムフィールド1を表示
functions.php
// カスタムフィールド1作成 function add_page_fields() { add_meta_box( 'page_setting', '本の情報', 'insert_page_fields', 'page', 'normal'); } add_action('admin_menu', 'add_page_fields'); // カスタムフィールドの入力エリア function insert_page_fields() { global $post; echo '題名: <input type="text" name="page_name" value="'.get_post_meta($post->ID, 'page_name', true).'" size="50" /><br>'; echo '作者: <input type="text" name="page_author" value="'.get_post_meta($post->ID, 'page_author', true).'" size="50" /><br>'; echo '価格: <input type="text" name="page_price" value="'.get_post_meta($post->ID, 'page_price', true).'" size="50" /> <br>'; if( get_post_meta($post->ID,'page_label',true) == "is-on" ) { $page_label_check = "checked"; } echo 'ベストセラーラベル: <input type="checkbox" name="page_label" value="is-on" '.$page_label_check.' ><br>'; } // カスタムフィールドの値を保存 function save_page_fields( $post_id ) { if(!empty($_POST['page_name'])){ update_post_meta($post_id, 'page_name', $_POST['page_name'] ); }else{ delete_post_meta($post_id, 'page_name'); } if(!empty($_POST['page_author'])){ update_post_meta($post_id, 'page_author', $_POST['page_author'] ); }else{ delete_post_meta($post_id, 'page_author'); } if(!empty($_POST['page_price'])){ update_post_meta($post_id, 'page_price', $_POST['page_price'] ); }else{ delete_post_meta($post_id, 'page_price'); } if(!empty($_POST['page_label'])){ update_post_meta($post_id, 'page_label', $_POST['page_label'] ); }else{ delete_post_meta($post_id, 'page_label'); } } add_action('save_post', 'save_page_fields');
試したこと
add_meta_box( 'page_setting', '本の情報', 'insert_page_fields', 'page', 'normal');
上記コード3行目add_meta_boxの第4引数にデザインテンプレートのパス(page/template1.php)なども記載してみましたがダメでした。
補足情報(FW/ツールのバージョンなど)
WordPress 4.9.4
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/12 06:53
2018/02/12 07:06
2018/02/12 16:54