Custom Rewrite Problem

时间:2013-04-10 作者:MikeGWP

我正在使用下面的代码创建一些自定义重写。就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;
    }

1 个回复
最合适的回答,由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.

结束

相关推荐