我使用下面的代码在category archive页面(使用archive.php)中显示当前类别中的随机帖子。但是,在标记或分类归档页面中,无法从当前标记或分类中正确显示帖子(由于仅限于类别的限制)。如何修改以使其与标记和分类法(或者仅仅是分类法,因为类别和标记也是分类法)一起工作。谢谢
// assign the variable as current category
$currentcategory = $cat;
// concatenate the query
$args = \'showposts=1&cat=\' . $currentcategory . \'&orderby=rand\';
$random_query = new WP_Query( $args );
// The Loop
if ( $random_query->have_posts() ) {
while ( $random_query->have_posts() ) {
$random_query->the_post();
// custom template for the random post
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
编辑了有关s\\u ha\\u dum答案的代码:
<?php // The Query
if (is_tax() || is_category() || is_tag() ){
$qobj = $wp_query->get_queried_object();
// concatenate the query
$args = array(
\'posts_per_page\' => 1,
\'orderby\' => \'rand\',
\'tax_query\' => array(
array(
\'taxonomy\' => $qobj->taxonomy,
\'field\' => \'id\',
\'terms\' => $qobj->term_id
)
)
);
}
$random_query = new WP_Query( $args );
// The Loop
if ( $random_query->have_posts() ) {
while ( $random_query->have_posts() ) {
$random_query->the_post(); ?>
//HTML tempalte
<?php }
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata(); ?>
最合适的回答,由SO网友:s_ha_dum 整理而成
您需要获取页面的查询对象,并动态填写分类信息。
if (is_tax() || is_category() || is_tag() ){
$qobj = get_queried_object();
// var_dump($qobj); // debugging only
// concatenate the query
$args = array(
\'posts_per_page\' => 1,
\'orderby\' => \'rand\',
\'tax_query\' => array(
array(
\'taxonomy\' => $qobj->taxonomy,
\'field\' => \'id\',
\'terms\' => $qobj->term_id,
// using a slug is also possible
// \'field\' => \'slug\',
// \'terms\' => $qobj->name
)
)
);
$random_query = new WP_Query( $args );
// var_dump($random_query); // debugging only
if ($random_query->have_posts()) {
while ($random_query->have_posts()) {
$random_query->the_post();
// Display
}
}
}
目前尚不清楚您是否需要此环路作为主环路的补充或替代。我假设这是;除此之外;因为如果要替换主查询,它将有效地删除归档功能。你我没有真正的档案,只是档案中的一篇随机帖子,它本身并不友好。
您可以使用category.php
以及tag.php
归档模板以分别处理标记和类别。您不需要使用archive.php
.
参考文献
http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parametershttp://codex.wordpress.org/Function_Reference/get_queried_object