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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

443閲覧

独自のカスタムフィールドを作成して、チェックボックスの値の有無で出力する内容を変えたい

aguu0101

総合スコア16

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2019/05/06 10:07

前提・実現したいこと

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

$valueが空だからだろうよ。
$post->IDでIDが取得できているのかが問題。
get_the_ID()に変えた方がよろしおます

投稿2019/05/06 10:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aguu0101

2019/05/06 11:09

ご連絡ありがとうございます。。 わかりやすい回答ありがとうございます!! 変えたらすぐできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問