带有两个参数的自定义固定链接

时间:2013-09-11 作者:vulcan raven

我正在为permalink使用自定义结构:/%postname%/%page%/%year%/.

当我导航到http://wordpress-serv/projects-teams/designers/19/2013, 它给我404“找不到页面”。

尽管如此,它与http://wordpress-serv/projects-teams/designers/19 (无年份)和get_query_var(\'page\'); 正在返回19. 现在,我只需要get_query_var(\'year\') 而不是变得怪异404。。

这里是什么。htaccess文件如下所示:

AddHandler php-stable .php

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
自定义永久链接中可以设置的参数数量是否有限制?有什么建议吗,可能出了什么问题?

3 个回复
最合适的回答,由SO网友:vulcan raven 整理而成

正如我所怀疑的那样,我最终不得不放弃pretty link,将永久链接改回:

/%postname%/%页%

然后我将URL更改为http://wordpress-serv/projects-teams/designers/19?fyear=2013 在shortcode中,我传递了$\\u GET[\'fyear],使用丑陋的查询字符串,它就可以正常工作。

SO网友:Jerry R.

根据WP codex,似乎没有%page%标签。有关结构标记的列表,请参阅codex。法典规定

必须使用其中一个结构标记,或仅使用标记的组合。

这可能就是问题所在。

http://codex.wordpress.org/Using_Permalinks#Using_.22Pretty.22_permalinks

因为法典规定

请确保以%post\\u id%或%postname%(例如,/%年%/%月%/%日%/%postname%/)结束您的结构,以便每个永久链接指向一个单独的帖子。

您可以尝试使用%page%标记结束永久链接,看看是否有效。

例如,/%postname%/%year%/%page%/(这可能有效,也可能无效,但值得一试)

SO网友:Milo

使用permalink结构字段无法完成此操作。正如Jerry指出的,你不能使用%page% 重写结构中的标记。WordPress在生成重写规则以自动处理分页时使用此标记。这就是如何设置正常的永久链接结构和分页的方法——它是在内部为您处理的。

您必须添加自己的重写规则才能正常工作,例如:

function wpa_rewrite_rule(){
    add_rewrite_rule(
        \'([^/]+)(/[0-9]+)(/[0-9]+)?/?$\',
        \'index.php?name=$matches[1]&paged=$matches[2]&year=$matches[3]\',
        \'top\'
    );
}
add_action( \'init\', \'wpa_rewrite_rule\' );
您可能还需要过滤post_link 为任何API调用生成此格式的正确URL以输出单个post URL。

结束

相关推荐

wordpress permalinks tweeks

在创建任何帖子后,我都会遵循permalink结构。。。http://domain.com/wp/postname根据Permalink设置。。。。职位名称:http://domain.com/wp/sample-post/这个永久链接对于页面来说很好,但我如何才能像下面这样添加blog作为前缀。。。。http://domain.com/wp/blog/文章标题http://domain.com/wp/blog/类别/职位名称如果你需要更多信息,请告诉我,谢谢。