无法使tax_query工作

时间:2014-12-12 12:32:04

标签: wordpress wp-query

我有一个自定义WP查询,其中列出了自定义帖子类型。我正在尝试设置过滤器以按自定义分类过滤列表。

我的查询设置如下:

// WP_Query arguments
$args = array (
    'post_type'              => 'opps',
    'post_status'            => 'publish',
    'pagination'             => true,
    'posts_per_page'         => $postsperpage,
    'posts_per_archive_page' => $postsperpage,
    'ignore_sticky_posts'    => true,
    'order'                  => 'DESC',
    'orderby'                => 'date',
    'cache_results'          => true,
    'update_post_meta_cache' => true,
    'update_post_term_cache' => true,
    'paged'                  => $paged,
    'tax_query'              => array(
                                    array(
                                        'taxonomy' => 'sector',
                                        'field'    => 'slug',
                                        'terms'    => 'business-services'
                                    ),
                                )
);

因此,在上面的示例中,我应该只获得具有分类和“扇区”的帖子。使用slug' business-services',但来自自定义帖子类型的所有帖子' opps'改为上市。

我已经在stackoverflow及其他地方到处寻找,但我无法弄清楚我做错了什么。

2 个答案:

答案 0 :(得分:0)

您的代码看起来很好。

之前我遇到过这个问题,因为wordpress直到init阶段才会同步分类术语。在调用get_header()或wp_head()之后,您是否尝试在模板中运行此代码?如果没有尝试,它应该工作。我知道如果我在functions.php中回应它进行测试它将无效,因为wordpress尚未同步税法条款。

答案 1 :(得分:0)

创建自定义查询时,您应该真正了解the codex (WP_Query)。你的代码代表它会失败。您有以下问题

  • pagination不是WP_Query的有效参数。

  • 您不能同时使用posts_per_pageposts_per_archive_page

  • 您无需设置默认设置的参数值。您的代码中使用的不必要的参数默认为默认值orderorderbypost_statuscache_resultsupdate_post_meta_cacheupdate_post_term_cache < / p>

自定义帖子类型没有粘性帖子功能。只需删除ignore_sticky_post参数

即可

您的代码看起来应该是这样的(我希望您的变量已定义)

// WP_Query arguments
$args = array (
    'post_type'              => 'opps',
    'posts_per_page'         => $postsperpage,
    'paged'                  => $paged,
    'tax_query'              => array(
         array(
            'taxonomy' => 'sector',
            'field'    => 'slug',
            'terms'    => 'business-services'
         ),
      )
);