2016-04-29 2 views
0

У меня есть WP_Query, который создает карусель Bootstrap. Я добавил переключатель расширенного пользовательского поля, который позволит клиенту использовать параметр «Да/Нет» для сообщения «Feature». Мой WP_Query отлично работает без Meta Query, но когда я его добавляю, он не дает никаких результатов. Я не уверен, что это потому, что это на archive.php или нет. Я добавил в динамическую категорию, которая будет показывать только избранные сообщения из текущей категории (которая отлично работает также). Это просто ACF, похоже, не работает. Я проверил, что значение ключа & хранится в базе данных точно так же, как и здесь. Я даже успешно повторил значение с помощью оператора get_field(), чтобы убедиться, что он работает. Я в тупике. Любые предложения будут ценны.WP_Query с расширенными настраиваемыми полями Мета-запрос не работает

Вот мой код:

<?php 
    $qcatid = get_queried_object(); // So we can get the query category ID 
    $args2=array(
     'post_type' => 'post', 
     'post_status' => 'publish',   
     'cat' => $qcatid->cat_ID, // Query the proper category 
     'orderby' => 'date',   
     'posts_per_page' => -1, 
     'meta_query' => array(    
      array(
      'key' => 'feature_in_slider_carousel', 
      'value' => 'Yes' 
     ) 
     ) 

    ); 
    $mycat_query = null; 
    $mycat_query = new WP_Query($args2); 
    if($mycat_query->have_posts()) { 
    $slide_count = 0; 
?> 
<section id="featured-posts"> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-12"> 
       <hr /> 
      </div> 
     </div> 
    </div> 
    <div id="featured-carousel" class="carousel slide" data-ride="carousel">     
     <div class="carousel-inner" role="listbox"> 
<?php 
    while ($mycat_query->have_posts()) : $mycat_query->the_post(); ?> 
    <div class="item <?php if ($slide_count == 1) { echo 'active';} ?>"> 
     <div class="row"> 
      <div class="col-sm-2 col-sm-offset-3"> 
       <div class="whitepaper-img"> 
       <a href="<?php the_permalink(); ?>"> 
        <?php 
         include(TEMPLATEPATH . '/inc/icon-include.php'); 
         if (has_post_thumbnail($post->ID)) { 
         $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'whitepaper-carousel'); ?> 
         <img src="<?php echo $image[0]; ?>" alt="<?php the_title(); ?>" class="img-responsive" /> 
        <?php } 
         else { ?> 
         <img src="<?php bloginfo('template_directory'); ?>/img/default-whitepaper.png" alt="<?php the_title(); ?>" class="img-responsive" />  
        <?php } ?> 
        </a> 
       </div> 
      </div> 
      <div class="col-sm-5">     
       <h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3> 
       <?php the_excerpt();?> 
       <div class="post-tags"> 
        <?php 
         $posttags = get_the_tags(); 
         if ($posttags) { 
          echo '<ul class="list-inline">'; 
          foreach($posttags as $tag) { 
          echo '<li><a href="'. get_bloginfo('url') .'/tag/' . $tag->slug . '/">' . $tag->name . '</a></li>'; 
          } 
          echo '</ul>'; 
         } 
        ?> 
        </div> 
      </div> 
     </div> 

    </div> 
    <?php 
    $slide_count++; 
    endwhile; ?> 
    </div> 

    <!-- Controls --> 
    <a class="left carousel-control" href="#featured-carousel" role="button" data-slide="prev"> 
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 
    <span class="sr-only">Previous</span> 
    </a> 
    <a class="right carousel-control" href="#featured-carousel" role="button" data-slide="next"> 
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 
    <span class="sr-only">Next</span> 
    </a> 

</div> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-12"> 
       <hr /> 
      </div> 
     </div> 
    </div> 
</section> 
<?php } 
    wp_reset_query(); 
?> 
+0

Вы пытались использовать 'field_key' вместо' field_name' как _key_ значение в _Meta Query_? –

ответ

0

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

Для тестирования я создал настраиваемое поле точно так, как вы описали, с возможным исключением, что я поставил пар значения/метки кнопок радио в качестве:

yes : Yes 
no : No 

Я установить значение по умолчанию, как нет.

Я использовал плагин под названием «Custom Bulk Editor» для массового присвоения значений существующим сообщениям, затем настроил archive.php, используя (в основном) ваш код, и все работало, как ожидалось.

$qcatid = get_queried_object(); 

$args2  = array(
    'post_type'  => 'post', 
    'post_status' => 'publish', 
    'orderby'  => 'date', 
    'cat'   => $qcatid->cat_ID, 
    'posts_per_page' => -1, 
    'meta_query'  => array(
    array(
     'key' => 'feature_in_slider_carousel', 
     'value' => 'Yes' 
    ) 
) 
); 

$mycat_query = null; 
$mycat_query = new WP_Query($args2); 

if ($mycat_query->have_posts()) : 
    echo '<ul>'; 

    while ($mycat_query->have_posts()) : $mycat_query->the_post(); 

    echo '<li>' . get_the_title() . '</li>'; 

    endwhile; 
    wp_reset_postdata(); 
    echo '</ul>'; 
endif; 

Стоит отметить, что это также работало без meta_query:

$args2 = array(
    'post_type'  => 'post', 
    'post_status' => 'publish', 
    'orderby'  => 'date', 
    'cat'   => $qcatid->cat_ID, 
    'posts_per_page' => -1, 
    'meta_key'  => 'feature_in_slider_carousel', 
    'meta_value'  => 'Yes' 
); 

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

Я столкнулся с проблемами с меткой/знаками ACF в прошлом, сделав для них какое-то редактирование, например, сменить foo: Bar to foo: Bat. Когда это произошло в прошлом, я обнаружил, что удаление и повторное создание поля с другим именем имеют для меня работу.

Извините, я не мог больше помочь.

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