添加_重写_规则和分页(PAGE和PAGE QUERY_VAR)的问题

时间:2012-04-10 作者:Daniel Roch-Lefebvre

我有一个名为location 我想为每个术语添加“新闻”和“市场”等部分,所以我的url看起来像/location/montreal/news/

在我尝试添加分页之前,它工作得非常好。这是我的代码:

add_action( \'init\', \'region_rewrite\' );
function region_rewrite()
{
    global $wp;
    $wp->add_query_var( \'section\' );

    add_rewrite_rule(
      \'^location/([^/]*)/([^/]*)/page/([0-9]+)/?\',
      \'index.php?location=$matches[1]&section=$matches[2]&paged=$matches[3]\',
      \'top\'
    );
    add_rewrite_rule(
      \'^location/([^/]*)/([^/]*)/?\',
      \'index.php?location=$matches[1]&section=$matches[2]\',
      \'top\'
    );
}
我正在使用Rewrite analyser plugin 而且,query\\u vars location、section和paged似乎分配了正确的值。然而,我在尝试访问页面url时遇到404错误,如/location/montreal/news/page/2. 我还注意到page 变量具有值/2. 这就是我找不到404的原因吗?

任何帮助都将不胜感激!

2 个回复
SO网友:Olivier

我想你可以直接呼叫呼叫add_rewrite_url last 以便首先对其进行检查。否则,分页版本将永远不会得到任何匹配,因为非分页版本总是首先匹配。如果您从参数中删除“top”,也应该可以。

此外,请查看此页面,了解在使用自定义重写时调试这些404的好方法:http://www.dev4press.com/2012/tutorials/wordpress/practical/debug-wordpress-rewrite-rules-matching/

SO网友:GordoF

多亏了奥利维尔。我自己的问题是,我的add\\u rewrite\\u url在页面上运行良好,但并不是所有帖子都可以。

如果只使用%postname%/ 在permalink设置中。如果使用/%category%/%postname%/i、 e。http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on保持301重定向到http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on因为wordpress的规范行为

下面的行停止了此问题。

remove_filter(\'template_redirect\', \'redirect_canonical\');
我想这应该在法典中提出。

结束

相关推荐

The pagination doesn't work

我已经创建了一个新的WordPress主题,我完成了。。但我有一个问题。我无法进行分页。我使用“wp paginate”插件,并在索引中添加了以下代码。php:<?php if(function_exists(\'wp_paginate\')) { wp_paginate(); } ?> 但这对我的网站不起作用。前端和标记中仍然没有任何内容。我能做什么?这是我的索引。php: <?php get_header(); ?>