WP查询TAX_QUERY不返回过帐

时间:2017-10-12 作者:jaker6492

我有一个WP查询,可以在分类法“tribe\\u events\\u cat”下标记为“featured”的类型“tribe\\u events”下搜索任何自定义帖子。

因此,需要明确的是:
post\\u type=\'tribe\\u events\'
分类法=\'tribe\\u events\\u cat\'
术语=\'featured\',\'streamteam\'

但是,当超出页面ID 199时,它不返回任何内容。我可以注释掉tax\\u查询,它可以工作,但会返回所有帖子,而不仅仅是标记为“特色”的帖子。

  if(is_page(199)) {
    $tribe_events_cat = array( \'featured\',\'streamteam\' );
  } else {
    $tribe_events_cat = \'featured\';
  }

  // The Query
  $event_args = array (
    \'post_type\' => \'tribe_events\',
    \'posts_per_page\' => 1,
    \'tax_query\' => array (
      array (
        \'taxonomy\' => \'tribe_events_cat\',
        \'field\' => \'slug\',
        \'terms\'     => $tribe_events_cat,
      ),
    ),
    \'meta_query\' => array(
      array(
        \'key\' => \'_EventStartDate\',
        \'value\' => date("Y-m-d"),
        \'compare\' => \'>=\',
        \'type\' => \'DATE\',
      ),
    ),
    \'meta_key\'          => \'_EventStartDate\',
    \'order\'             => \'ASC\'
  );
  $event_query = new WP_Query( $event_args );

  // The Loop
  if ( $event_query->have_posts() ) {
    while ( $event_query->have_posts() ) {
    $event_query->the_post();
    ?>
    POST CONTENT HERE
    <?php
    }
  }
我的tax\\u查询有什么问题?!

EDIT:

这个答案解决了我最初的问题,即我的查询没有返回帖子https://stackoverflow.com/questions/30213495/wp-query-returns-no-results
显然有一个筛选器与我的查询冲突
然而,我仍然有一个问题。。我只想在ID 199页上返回带有“特色”和“streamteam”术语的帖子。目前,它正在返回只属于“特色”术语的帖子。

3 个回复
最合适的回答,由SO网友:jaker6492 整理而成

谢谢你的帮助!以下是我最终得到的结果:

if(is_page(199)) {
  // The Query
  $event_args = array (
    \'post_type\' => \'tribe_events\',
    \'posts_per_page\' => 1,
    \'suppress_filters\' => true,
    \'tax_query\' => array (
      \'relation\' => \'AND\',
      array (
        \'taxonomy\' => \'tribe_events_cat\',
        \'field\' => \'slug\',
        \'terms\' => \'streamteam\',
      ),
      array (
        \'taxonomy\' => \'tribe_events_cat\',
        \'field\' => \'slug\',
        \'terms\' => \'featured\',
      ),
    ),
    \'meta_query\' => array(
      array(
        \'key\' => \'_EventStartDate\',
        \'value\' => date("Y-m-d"),
        \'compare\' => \'>=\',
        \'type\' => \'DATE\',
      ),
    ),
    \'meta_key\' => \'_EventStartDate\',
    \'order\' => \'ASC\'
  );
  } else {
    // The Query
    $event_args = array (
      \'post_type\' => \'tribe_events\',
      \'posts_per_page\' => 1,
      \'suppress_filters\' => true,
      \'tax_query\' => array (
        array (
          \'taxonomy\' => \'tribe_events_cat\',
          \'field\' => \'slug\',
          \'terms\' => \'featured\',
        ),
      ),
      \'meta_query\' => array(
        array(
          \'key\' => \'_EventStartDate\',
          \'value\' => date("Y-m-d"),
          \'compare\' => \'>=\',
          \'type\' => \'DATE\',
        ),
      ),
      \'meta_key\' => \'_EventStartDate\',
      \'order\' => \'ASC\'
    );
  }
$event_query = new WP_Query( $event_args );

// The Loop
if ( $event_query->have_posts() ) {
  while ( $event_query->have_posts() ) {
  $event_query->the_post();
  ?>
  POST CONTENT HERE
  <?php
  }
}
而不是使用数组($tribe_events_cat) 对于我的terms 子查询,我必须使用两个单项terms 子查询,打开我的tax_query 进入并请求中的职位featuredstreamteam.

还有,我不得不补充\'suppress_filters\' => true, 到每个args数组,以修复在我的查询之外发生的影响我的结果的一些奇怪的过滤问题。

SO网友:janh

好的,我刚刚在我的安装中对此进行了测试(这里有一个分类法)。通常,我只是快速地将东西放入函数中。php并查看生成的SQL(print $event_query->request;). 这不起作用,并且始终生成tax\\u查询0 = 1 从而确保没有结果。

最后,heureka,分类法在那个阶段没有注册。以后再运行它,它就会按预期工作。

类似的事情会发生在你身上吗?根据当前请求的页面,您的分类法注册码是否会有不同的工作方式?

在任何情况下,也请将生成的SQL添加到问题中。那可能会发光。如何添加分类法、CPTUI或类似的分类法,或者如何添加您自己的代码?

可能会加入

foreach ( get_post_types() as $post_type ) {
   echo \'<p>\' . $post_type . ": " . var_export(get_object_taxonomies($post_type), true) . \'</p>\';
}
只是想确定一下。

SO网友:Jaed Mosharraf

你用过这个\'meta_key\' => \'_EventStartDate\', 为了什么目的?一切看起来都很好,你试过评论meta_query

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post