2016-03-06 2 views
0

Чтобы отобразить все категории имени с флажком из пользовательской таксономии называется ct_category У меня есть следующий код:Динамически условия tax_query

$terms = get_terms('ct_category'); 
foreach ($terms as $term) { 
echo '<li class='.$term->term_id.'><label > <input class="taxonomy_category" type="checkbox" name="taxonomy_category['.$term->term_id.']" value ="'.$term->term_id.'" />'.$term->name.'</label ></li>';   
}            

Я хотел бы, чтобы отобразить содержимое только из проверяемых категорий. Я попробовал следующее, что не получилось:

$args = array(
'post_type' => 'cpt', 
'tax_query' => array(
      array(
       'taxonomy' => $ct_category, 
       'field' => 'term_id', 
       'terms' => $_POST['taxonomy_category'] 
       ) 
      ) 
      ); 
$loop = new WP_Query($args); 

я могу догадаться, что этот вопрос находится в 'terms' => $_POST['taxonomy_category']. Если атрибут имени taxonomy_category['.$term->term_id.'] может отображаться как массив в 'terms' =>, проблема будет исправлена. Много раз искал Google, но не смог найти решение.

Вот полный код

<?php 

function add_meta_box() { 
    add_meta_box('ct_metabox', 'CT', 'meta_box_content_output', 'cpt', 'normal'); 
} 
add_action('add_meta_boxes', 'add_meta_box'); 


function meta_box_content_output ($post) { 

    wp_nonce_field('save_meta_box_data', 'meta_box_nonce'); 

    $taxonomy_category = get_post_meta($post->ID, 'taxonomy_category', true); 

    function categories_checkbox(){ 
     $terms = get_terms('ct_category'); 

     foreach ($terms as $term) { 
     echo '<li class='.$term->term_id.'><label > <input class="taxonomy_category" type="checkbox" name="taxonomy_category['.$term->term_id.']" value ="'.$term->term_id.'" />'.$term->name.'</label ></li>';   
     } 
    } 
<? 

<ul> 
    <li> 
     <?php categories_checkbox() ?> 
    <li> 
</ul>   

<?php 
} 

function save_meta_box_data($post_id) { 

    // Check if our nonce is set. 
    if (! isset($_POST['meta_box_nonce'])) { 
     return; 
    } 

    // Verify that the nonce is valid. 
    if (! wp_verify_nonce($_POST['meta_box_nonce'], 'save_meta_box_data')) { 
     return; 
    } 

    // If this is an autosave, our form has not been submitted, so we don't want to do anything. 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return; 
    } 

    // Check the user's permissions. 
    if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) { 

     if (! current_user_can('edit_page', $post_id)) { 
      return; 
     } 

    } else { 

     if (! current_user_can('edit_post', $post_id)) { 
      return; 
     } 
    } 



    $taxonomy_category_value = ""; 

    if(isset($_POST["logo_taxonomy_category"])) { 
     $taxonomy_category_value = sanitize_text_field($_POST["logo_taxonomy_category"]); 
    } 
    update_post_meta($post_id, "logo_taxonomy_category", $taxonomy_category_value); 

} 
add_action('save_post', 'save_meta_box_data'); 
?> 

<?php 
$args = array(
    'post_type' => 'cpt', 
    'tax_query' => array(
     array(
      'taxonomy' => $ct_category, 
      'field' => 'term_id', 
      'terms' => $taxonomy_category 
      ) 
     ) 
     ); 
$loop = new WP_Query($args); 
?> 

ответ

0

Печать Флажки как этот

echo '<li class='.$term->term_id.'><label > <input class="taxonomy_category" type="checkbox" name="taxonomy_category[]" value ="'.$term->term_id.'" />'.$term->name.'</label ></li>';  

Это будет собирать все идентификаторы в массиве $_POST['taxonomy_category']

А потом пишут WP_Query, как показано ниже:

удалить $ из названия таксономии и передать стоимость e терминов ниже

$args = array(
'post_type' => 'cpt', 
'tax_query' => array(
      array(
       'taxonomy' => 'ct_category', 
       'field' => 'term_id', 
       'terms' => $_POST['taxonomy_category'], 
       'operator'=> 'IN' 
       ) 
      ) 
      ); 
$loop = new WP_Query($args); 
+0

Спасибо за ваш ответ Prakash. К сожалению, ваше решение не сработало. Я только что добавил полный код, который может помочь вам понять больше. – Babu

Смежные вопросы