目前我的解决方案是使用GET变量请求不同的页面模板:
常规版本的分类页面:mysite。com/subjects/science博客版的分类法页面:mysite。com/主题/科学?view=blog来处理?view=blog变量,我将此条件添加到分类法的顶部。php(或taxonomy-subjects.php和任何其他分类法{slug},我想有一个替代版本):
/****************************************************
Tell Wordpress to fetch a different
template if our URL ends in ?view=blog
****************************************************/
$view = $_GET["view"];
if ( $view == "blog" ) {
get_template_part( \'blog-archive\' );
exit();
}
然后,在博客存档中。php模板中,我调整了$wp\\u query的query\\u vars,以输出一个只包含博客帖子的循环。
// adjust $wp_query->query_vars to taste
$newloop = array_merge( $wp_query->query_vars, array( \'post_type\' => \'blog\', \'posts_per_page\' => 5 ));
$the_query = new WP_Query ($newloop);
while ( $the_query->have_posts() ) : $the_query->the_post();
//output your posts however you like
endwhile;
wp_reset_postdata();
目前这对我很有效;唯一不幸的是URL显示了什么?视图=博客,而不是尼斯/博客。我从下面的答案中借用了主要的$\\u GET[]想法:
How can I dynamically load another page template to provide an alternate layout of the posts?. (我想知道使用$the\\u query=$wp\\u query->set(\'post\\u type\',\'blog\')是否可以更直观地实现后者);但这似乎将$the\\u查询变成了一个非对象,并给出了一个错误。)