我正在处理一个主题,其中似乎存在404错误和重写规则。规则如下:
products/([^/]+)/page/?([0-9]{1,})/?$
index.php?portfolio=$matches[1]&paged=$matches[2]
第一页看起来很好,但分页的url请求看起来不正确:
http://www.site.com/products/page/2
在我假设的地方,根据重写规则,它应该看起来像:
http://www.site.com/products/foo/page/2
所以我要解决foo
。这似乎是一个丢失的水平/串([^/]+)
,我以为这是某种形式的PCRE /的preg_match的,如上所述在这里,我不是很了解。据我所知,它的意思是:
开始子模式>开始字符类定义>断言主题的开始(或行,在多行模式下)>无头绪>结束字符类定义> 1个或多个量词>结束子模式
更新:
这与我设计的主题无关。我使用了重写规则检查器来查找重写规则查询。
问题在于带有画廊简码的分页链接。该短代码可以在网站的主页上使用,但是在其他页面(即/ products页面)上调用它,然后尝试访问下一页时,系统会显示404。当永久链接设置为默认值时,它可以使用。这就是为什么我认为问题出在重写规则上。
解决方案:
在仔细研究了插件并修改了重写行为之后,我意识到该插件没有创建重写规则来处理投资组合页面的分页。因此,我自己做了一个并将其实现为mu-plugin
,然后通过电子邮件向插件作者发送了问题。
add_action( 'init', 'addMyRules' );
function addMyRules(){
add_rewrite_rule('(.+?)/page/?([0-9]{1,})/?$','index.php?pagename=$matches[1]&paged=$matches[2]','top');
}
这里有一些想法:
我将使用此WordPress重写分析器插件查看匹配的规则。它说它已经过时了,但是插件开发人员(Jan Fabry)非常有才华。几个月前,我上次使用它时,它仍在工作。
WordPress保留了一系列重写规则(我忘记了在哪里找到它,可能是在$wp_rewrite
全局范围之内)。上面的插件可帮助您与这些匹配。
您如何生成分页链接?您的问题可能是您的分页链接生成不正确,而不是重写规则不起作用?换句话说,如果您使用paginate_links()
函数来生成这些链接,则它们可能不会生成与您的重写规则匹配的链接。尝试*/foo/*
直接输入您的网址。
另外,请记住,每当对重写规则进行更改时,都需要刷新它们。您可以通过访问/wp-admin/
后端的“设置”>“永久链接”页面来执行此操作(您可能必须在此页面上提交表单以重新保存永久链接设置,尽管我听说这不是必需的)。
据我所知,重写分析器应该能够准确地将您的URL与您创建的重写规则进行匹配。只要确保在进行更改时就刷新重写规则即可。
RE:更新
您有2个选择:使您的重写规则与您现有的图库分页链接匹配,或使画廊分页链接与您现有的重写规则匹配。
要执行后者,您将需要找到图库的简码。在wp-content
文件夹中进行搜索以查找add_shortcode(
功能,然后您将找到画廊短代码的定义位置。然后,去和改变的paginate_links()
功能。它采用各种参数来影响链接的格式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句