这是您代码中的预期输出。切勿在任何存档页或主页上更改自定义查询的主查询。自定义查询总是很麻烦,因为主查询在这些页面上非常具体。
我建议你pre_get_posts
要更改特定归档页或主页上的主查询,请将默认循环保留在适当的位置。
此外,您的税务查询完全错误。它应该是一个数组中的一个数组。请查看在中构造税务查询WP_Query
如需进一步阅读和更好地理解,请参阅my answer 我最近也问了一个类似的问题
示例代码(放在functions.php中并返回taxonomy.php中的默认循环):
function custom_author_page( $query ) {
if ( !is_admin() && $query->is_tax( \'post_authors\' ) && $query->is_main_query() ) {
$query->set( \'post_type\', \'my-post-type\' );
$query->set( \'order\', \'DESC\' );
}
}
add_action( \'pre_get_posts\', \'custom_author_page\' );
EDIT
根据您的评论,您已经将您的分类法模板命名为taxonomy post-author。php与分类法相关
post
和期限
author
. 将分类法模板重命名为taxonomy-post\\u作者。php
EDIT 2
OPTION 1
将分类法页面更改为仅默认循环,无自定义循环。
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
//
// Post Content here
//
} // end while
} // end if
?>
将主查询更改为
pre_get_posts
如上所述。这是正确的方法
OPTION 2
使用获取查询的术语
get_queried_object(\'term\');
, 从那返回术语的鼻涕虫
PS!此代码应在分类页面中使用$queried_object = get_queried_object(\'term\');
$term_slug = $queried_object->slug;
返回
$term_slug
到您的
tax_query
像
terms
EDIT 3
要从特定分类法中获取术语名称/段塞/ID的数组,请使用
get_terms()
.
$terms = get_terms(\'post_authors\');
$term_names = array();
if ( !empty( $terms ) && !is_wp_error( $terms ) ) {
foreach ( $terms as $key=>$term){
$term_names[$key] = $term->name;
}
}
然后你就可以通过
$term_names
到
terms
,
\'terms\' => $term_names
EDIT 4
使用
<pre><?php var_dump($term_names); ?></pre>
打印阵列。输出如下所示
array(6) {
[0]=>
string(12) "Admin se pen"
[1]=>
string(11) "Besprekings"
[5]=>
string(12) "Toets Parent"
[6]=>
string(15) "Uit die grapkas"
[7]=>
string(14) "Uit die koskas"
[8]=>
string(11) "Uit my lewe"
}