チェックした項目だけ出力したいのに、配列の中身が全て出力されてしまいます。
問題のコードです↓
php
1$ar = ['a','b','c']; 2//同様に「d、e、f、、、」と100個ある 3foreach($ar as $tmp){ 4 echo '<li>'.get_post_meta(bbp_get_topic_id(), $tmp, true).'</li>'; 5}
上のようにecho
すると、たとえばチェックした「a」という1個が<li>a</li>
と出力されるのは良いとして、それ以外の「b、c、d、e、f、g、、」というチェックしてない<li></li>
が空っぽで99個出力されてしまうのです。
上記のコードはワードプレスのfunctions.phpで下記のように書いて作り、チェックボックスはここから表示されチェックの有無が登録されます。
php
1add_action ( 'bbp_theme_before_topic_form_content', 'bbp_extra_fields'); 2function bbp_extra_fields() { 3 4 $html = ""; 5 $html .= '<input type="checkbox" name="a" value="a">a'; 6 $html .= '<input type="checkbox" name="b" value="b">b'; 7 $html .= '<input type="checkbox" name="c" value="c">c'; 8 //同様に「d、e、f、、、」と100個ある 9 10 echo $html; 11} 12 13add_action ( 'bbp_new_topic', 'bbp_save_extra_fields', 10, 1 ); 14add_action ( 'bbp_edit_topic', 'bbp_save_extra_fields', 10, 1 ); 15function bbp_save_extra_fields($topic_id = 0) { 16 17 if (isset($_POST) && $_POST['a']!='') { 18 update_post_meta( $topic_id, 'a', $_POST['a'] ); 19 } 20 if (isset($_POST) && $_POST['b']!='') { 21 update_post_meta( $topic_id, 'b', $_POST['b'] ); 22 } 23 if (isset($_POST) && $_POST['c']!='') { 24 update_post_meta( $topic_id, 'c', $_POST['c'] ); 25 } 26 //同様に「d、e、f、、、」と100個ある 27 28}
どうしたらチェックした項目の<li></li>だけ出力させることができるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/30 23:24
2018/07/30 23:52
2018/07/30 23:53 編集
退会済みユーザー
2018/07/30 23:59
2018/07/31 00:01
退会済みユーザー
2018/07/31 00:10
2018/07/31 00:41
2018/07/31 00:46
退会済みユーザー
2018/07/31 11:05
2018/07/31 12:28