我有个奇怪的问题想添加一个重写规则。
首先,一个关于我的装置的笔记.我正在使用一个date.php文件的另一个特定的设置在网站上。
我遇到问题的地方是一个定制的档案页面。为了不弄乱date.php模板,我尝试在wordpress中设置一个新页面,然后创建自己的模板来显示文档。
为了用日期捕获url而不是重定向到date.php,我设置了以下add_rewrite_rules:
function my_archives() {
add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/page/([0-9]{1,})/?$", 'index.php?pagename=my-archives&year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]', 'top');
add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/?$", 'index.php?pagename=my-archives&year=$matches[1]&monthnum=$matches[2]', 'top');
}
add_action('init', 'my_archives'); 我认为一切都很好,因为我的链接工作正常。示例:用于分页结果的http://mysite.com/my-archives/2013/09/和http://mysite.com/my-archives/2013/09/page/2/。
一个月后,我发现由于某种原因,它只能正确地重定向到比当前日期晚一个月的日期。因此,目前的日期是2013/10/它只是重定向/2013/09/,其他的一切都被重定向到404页。
如果有人在我的代码中看到一些不正确的东西,那么我们将非常感谢您对可能的原因提出的任何建议。
发布于 2013-10-29 23:38:02
您是否碰巧没有查询的任何结果?
您是否链接到WordPress查询,以确保WordPress正确理解该查询(可能WordPress正在尝试在指定的年份和月份内查找带有片段“archives”的页面,如果不能,则显示一个404错误)。
尝试执行以下操作:
var_dump( get_posts( 'pagename=my-archives&year=2013&monthnum=10' ) );看看能不能得到任何结果。如果没有,那很可能是你的问题。
为了解决这一问题,我建议您将重写规则更改为:
add_rewrite_rule("my-archives/([0-9]{4})/([0-9]{1,2})/?$", 'index.php?pagename=my-archives&my_year=$matches[1]&my_monthnum=$matches[2]', 'top');因为我假设如果您没有连接到主WordPress查询,那么您将在自定义页面模板上执行该查询。在那里,您应该查找my_year和my_monthnum查询变量,而不是year和month。
请记住,实际上修改主WordPress查询(在parse_request(传递$wp对象而不是$wp_query)或pre_get_posts操作(传递$wp_query对象)上)可能是更好的解决方案。
https://stackoverflow.com/questions/19668821
复制相似问题