前提・実現したいこと
WordPressにてプラグインを開発しています。
その中で記事編集画面(投稿と固定ページ)に独自のカスタムフィールドを作成し、チェックボックスのチェックの有無で
チェックがある場合はCSSを出力させ、無い場合はCSSを出力させないようにしたいです。
発生している問題・エラーメッセージ
該当のソースコードを見ていただければお分かりかとは思いますが、
get_post_meta($post->ID, 'space_overlay', true)
の値が有るのか無いのかで条件分岐しています。
ですが、現状チェックボックスにチェックを入れようが入れまいが、CSSが出力されてしまいます。
該当のソースコード
functionsphp
1// 独自のカスタムフィールドを追加 2add_action('admin_menu', 'add_overlay'); 3function add_overlay() { 4 add_meta_box( 'add_space', 'この記事をオーバーレイアイキャッチにする', 'insert_overlay', 'post', 'side', 'low', array('オーバーレイアイキャッチにする')); 5 add_meta_box( 'add_space', 'この記事をオーバーレイアイキャッチにする', 'insert_overlay', 'page', 'side', 'low', array('オーバーレイアイキャッチにする')); 6} 7function insert_overlay($post, $metabox){ 8 9 for($i=0; $i<count($metabox['args']); $i=$i+1){ 10 $check = $metabox['args'][$i]; 11 echo '<label><input type="checkbox" name="space_overlay" value="' . $check . '"'; 12 if ( get_post_meta($post->ID, 'space_overlay', true) == $check ) echo ' checked'; 13 echo ' />' . $check . '</label><br />'; 14 } 15} 16 17add_action('save_post', 'save_overlay'); 18function save_overlay($post_id){ 19 20 $mydata = isset($_POST['space_overlay']) ? $_POST['space_overlay'] : ''; 21 if( ! empty($mydata) ) 22 update_post_meta($post_id, 'space_overlay', $mydata); 23 else 24 delete_post_meta( $post_id, 'space_overlay' ); 25 26 return $mydata; 27} 28 29 30// オーバーレイアイキャッチにするためのCSSを条件分岐で出力させる 31function space_customize_css2(){ 32 ?> 33 <?php $value = get_post_meta($post->ID, 'space_overlay', true);?> 34 <?php if(empty($value)):?> 35 <style> 36 @media screen and (max-width:767px){ 37 .space_cus .cps-post-box .cps-post { 38 position: relative; 39 } 40 .space_cus .cps-post-box .cps-post .cps-post-header { 41 position: absolute; 42 top: 0; 43 left: 0; 44 bottom: 0; 45 right: 0; 46 width: 100%; 47 z-index: 1; 48 margin: 0 auto; 49 } 50 .space_cus .cps-post-box .cps-post .cps-post-header .cps-post-cat { 51 position: absolute; 52 top: 25%; 53 left: 0; 54 right: 0; 55 bottom: 0; 56 text-align: center; 57 margin-right: 0; 58 margin-bottom: 0; 59 } 60 .space_cus .cps-post-box .cps-post .cps-post-header .cps-post-title { 61 font-size: 1rem; 62 line-height: 1.7rem; 63 position: absolute; 64 top: 40%; 65 left: 0; 66 right: 0; 67 bottom: 0; 68 text-align: center; 69 } 70 .space_cus .cps-post-box .cps-post .cps-post-header .cps-post-meta { 71 position: absolute; 72 top: 67%; 73 left: 0; 74 right: 0; 75 bottom: 0; 76 text-align: center; 77 } 78 .space_cus .cps-post-box .cps-post .cps-post-thumb { 79 -webkit-filter: brightness(30%); 80 filter: brightness(30%); 81 } 82 } 83 </style> 84 <?php else:?> 85 <?php endif;?> 86 <?php 87} 88add_action( 'wp_head', 'space_customize_css2', 13,1);
試したこと
おそらく、指定しているカスタムフィールドの値がうまく取得できていないのが原因なのかなぁと思い
以下の項目を試しましたが、問題は解決しませんでした。
・チェックボックスからテキスト入力にして、値の有無で条件分岐
https://techmemo.biz/wordpress/add-custom-fields/
上記のURLを参考にチェックボックスの選択ではなくテキスト入力に変えて値を入力、同じように条件分岐を書いてみましたが出力されませんでした。
その他、キーを変更してみたりadd_meta_boxの値をそれぞれ変更してみたりしましたが解決しませんでした。
補足情報(FW/ツールのバージョンなど)
・WordPressのバージョン WordPress 5.1.1
・使用しているブラウザ GoogleChrome
・PHPバージョン 7.0
・使用サーバー mixhost
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/06 11:09