我有一个自定义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及其他地方到处寻找,但我无法弄清楚我做错了什么。
答案 0 :(得分:0)
您的代码看起来很好。
之前我遇到过这个问题,因为wordpress直到init阶段才会同步分类术语。在调用get_header()或wp_head()之后,您是否尝试在模板中运行此代码?如果没有尝试,它应该工作。我知道如果我在functions.php中回应它进行测试它将无效,因为wordpress尚未同步税法条款。
答案 1 :(得分:0)
创建自定义查询时,您应该真正了解the codex (WP_Query
)。你的代码代表它会失败。您有以下问题
pagination
不是WP_Query
的有效参数。
您不能同时使用posts_per_page
和posts_per_archive_page
您无需设置默认设置的参数值。您的代码中使用的不必要的参数默认为默认值order
,orderby
,post_status
,cache_results
,update_post_meta_cache
和update_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'
),
)
);