WordPressにおいて、add_meta_box()を用い、チェックボックスで構成されるカスタムフィールドを作成しました。
(下記例では、「おすすめ記事にする」、「特集記事にする」設定を付与できるチェックボックスを作ったと過程しています)
データベースへの保存までは上手くいったようなのですが、例えば「おすすめ記事にする」にチェックを入れた記事一覧を取得する部分でつまずいてしまいました。クエリの変数設定方法に問題がある気がするのですが、どなたかアドバイスいただけないでしょうか?
PHP
1 /*メタボックスの追加*/ 2 function recomend_checkbox() { 3 add_meta_box( 4 'my_sectionid', 5 'おすすめ記事の設定', 6 'recomend_checkbox_field', 7 'post', 8 'advanced', 9 ); 10 } 11 add_action('admin_menu', 'recomend_checkbox'); 12 13 14 15 /*カスタムフィールドの作成と値のセット*/ 16 function recomend_checkbox_field() { 17 global $post; 18 $get_recomend = get_post_meta( $post->ID,'recomend',true ); 19 $recomend = $get_recomend ? $get_recomend : array(); 20 $data = array( 21 array('text' => 'おすすめ記事に設定する', 'value' => 1), 22 array('text' => '特集記事に設定する', 'value' => 2) 23 ); 24 ?> 25 26 <?php 27 wp_nonce_field('wp-nonce-key', '_wp_nonce'); ?> 28 29 <?php foreach ( $data as $d ) { 30 if ( in_array($d['value'], $tools) ) { $check = "checked"; } else { $check = ""; } 31 echo '<label><input type="checkbox" name="recomend[]" value="' . esc_attr($d['value']) . '" ' . $check . '>' . esc_html($d['text']) . '</label><br>'; 32 } ?> 33 <?php 34 } 35 36 /*保存用の関数*/ 37 function save_recomend_field($post_id) { 38 if ( isset($_POST['_wp_nonce']) && $_POST['_wp_nonce'] ) { 39 if ( check_admin_referer('wp-nonce-key', '_wp_nonce') ) { 40 if ( isset($_POST['recomend']) && $_POST['recomend'] ) { 41 update_post_meta( $post_id, 'recomend', $_POST['recomend'] ); 42 } else { 43 delete_post_meta( $post_id, 'recomend', get_post_meta($post_id, 'recomend', true) ); 44 } 45 } 46 } 47 } 48 add_action('save_post', 'save_recomend_field'); 49 50 /*表示用の関数*/ 51 function recomend_article() { 52 //↓この部分に問題があると考えています。 53 $args = array( 54 'meta_query' => array( 55 array ( 56 'key' => 'recomend', 57 'value' => 1, 58 'compare' => '=' 59 ) 60 ) 61 ); 62 //↑この部分に問題があると考えています。 63 64 $query = new WP_Query($args); 65 if ($query->have_posts()) : 66 while ($query->have_posts()) : 67 $query->the_post(); 68 69 ?> 70 <div> 71 <p> 72 <?php the_title(); ?> 73 </p> 74 </div> 75 <?php 76 endwhile; 77 endif; 78 wp_reset_postdata(); 79 } 80 81
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。