我正在使用下面的代码创建一些自定义重写。就URL而言,一切正常,如下所示:
实例com/评论/showname
告诉我的主题使用特殊的归档页面,并传递我需要的参数。我遇到的问题是分页。Wordpress正确生成链接:
实例com/reviews/showname/page/2/
但结果是找不到页面。我的第一个想法是添加第二次重写:
\'reviews/(.+)/(.+)/(.+)\' => \'index.php?reviews=1&showarchive=1&category_name=\' . $wp_rewrite->preg_index(1) . \'&pgd=\' . $wp_rewrite->preg_index(2) . \'&pgn=\' . $wp_rewrite->preg_index(3),
因此,我可以捕获“页面”和页码,并使用它们将偏移量编码到查询中,并设置分页查询变量,但我发现当我添加此变量时,它会抵消其他变量,以便:
实例com/评论/showname
现在返回未找到但
实例com/reviews/showname/page/1/
作品出于SEO目的,我想保留
实例com/评论/showname
样式url不带/page/1-有没有办法让重写在这两种情况下都能正常工作?
add_filter(\'query_vars\', \'eparchive_queryvars\' );
function eparchive_queryvars( $qvars )
{
$qvars[] = \'showarchive\';
$qvars[] = \'reviews\';
$qvars[] = \'pgd\';
$qvars[] = \'pgn\';
return $qvars;
}
add_action(\'generate_rewrite_rules\', \'custom_add_rewrite_rules\');
function custom_add_rewrite_rules( $wp_rewrite )
{
$new_rules = array(
\'reviews/(.+)\' => \'index.php?reviews=1&showarchive=1&category_name=\' . $wp_rewrite->preg_index(1)
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
最合适的回答,由SO网友:birgire 整理而成
您可以尝试以下规则:
reviews/([^/]+)/page/?([0-9]{1,})/?$
reviews/([^/]+)/?$
可以通过以下方式查看活动重写规则:
function show_rewrite_rules( $rules ) {
if(is_admin()) echo "<pre>".print_r($rules,true)."</pre>";
return $rules;
}
add_filter(\'rewrite_rules_array\',\'show_rewrite_rules\');
然后访问
/wp-admin/options-permalink.php
.
还有一些很好的插件可以用来分析重写规则,例如Monkeyman Rewrite Analyzer.