因此,我在自己的网站上有一点曲线球设置,但我意识到它可以用来完全回避您的问题。
例如,在我自己的网站tomjn上。com,我的主页是一个普通主页,设置为最新帖子,然后使用home.php
作为的模板。
然而,我的文章页面根本不是一个页面,它是一个由重写规则支持的存档。由于这是一条重写规则,我可以完全控制查询变量:
// add my articles/ archive, and pagination rules!
// I also added a query variable so that I know
// if I\'m on this page or not
function tomjn_posts_rewrite_rule() {
add_rewrite_rule(\'articles/page/([0-9]{1,})/?\',\'index.php?paged=$matches[1]&toms_custom_posts=true\',\'top\');
add_rewrite_rule(\'articles/?\',\'index.php?toms_custom_posts=true\',\'top\');
}
add_action(\'init\', \'tomjn_posts_rewrite_rule\', 10, 0);
// does the same thing as the next function but
// specifically to the main query. Seems redundant
// but it was necessary for some reason :/
function tomjn_template_redirect_intercept () {
global $wp_query;
if ( $wp_query->get( \'toms_custom_posts\' ) ) {
$wp_query->is_home = false;
$wp_query->is_archive = true;
$wp_query->show_posts = true;
}
}
add_action( \'template_redirect\', \'tomjn_template_redirect_intercept\' );
// WP has some ideas about what query vars are set,
// I have my own, lets make sure this is an archive,
// not the homepage, and that posts are fetched
// but only if my custom query var is set
function _tomjn_setup_posts_page( $query, \\WP_Query $q ) {
if ( $q->is_main_query() && $q->get( \'toms_custom_posts\' ) ) {
$q->is_home = false;
$q->is_archive = true;
$q->show_posts = true;
}
return $query;
}
add_filter( \'posts_request\', \'_tomjn_setup_posts_page\', 1, 2 );
// whitelist my custom query var
function tomjn_rewrite_query_vars( $vars ) {
$vars[] = \'toms_custom_posts\';
return $vars;
}
add_filter( \'query_vars\', \'tomjn_rewrite_query_vars\' );
现在我相信你知道如何改变
tom
到
thebigk
等等,然后换掉
articles
等等
我也相信你知道如何使用template_include
加载您自己选择的模板文件,否则将加载archive.php
.
请注意,安装代码后需要刷新永久链接。
一般的想法是添加一个重写规则来创建新的存档。在查询参数中,添加一个标记,以便知道它何时处于活动状态。但是WP不知道它是一个归档文件,所以代码截取了主查询并进行了一些调整,以便知道它是一个归档文件
作为旁白,测试/articles/?tag=php
在我的网站上使用此代码。它应该与您设置的内容配合使用,但情况显然不是这样。所以我提供了一个替代的,有点疯狂的解决方案
hint: 如果您第三次复制重写规则,并在主题中添加一些正则表达式魔术,那么您的/search/?topic=xyz
成为/search/topic/xyz