具有高级自定义字段的WP_Query元查询无效

时间:2016-04-29 15:24:05

标签: wordpress advanced-custom-fields

我有一个构建Bootstrap轮播的WP_Query。我添加了一个高级自定义字段单选按钮,该按钮允许客户端在帖子上显示是/否选项"功能"这个。我的WP_Query在没有Meta Query的情况下工作得很好,但是当我添加它时,它没有给出任何结果。我不确定这是不是因为这是在archive.php上。我添加了一个动态类别,它只显示当前类别的特色帖子(这也很好用)。它只是似乎没有工作的ACF。我已经验证了关键和&值存储在数据库中,就像在这里调用一样。我甚至使用get_field()语句成功地回显了该值,以确保它正常工作。我很难过。任何建议将不胜感激。

这是我的代码:

<?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();
?>

1 个答案:

答案 0 :(得分:0)

据我所知,你的代码很好。我测试了在VVV上运行的本地站点并填充了WP虚拟内容。

为了测试我完全按照你的描述创建了自定义字段,可能的例外是我将单选按钮值/标签对设置为:

yes : Yes
no : No

我将默认值设置为no。

我使用了一个名为“自定义字段批量编辑器”的插件来为现有帖子批量分配值,然后使用(大部分)代码设置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。在过去发生这种情况时,我发现删除并重新创建具有不同名称的字段已经让我有所帮助。

抱歉,我无法提供更多帮助。