任何包含页面类型帖子、订单类型帖子或帖子的页面都会显示此错误。这仅在托管环境中可见。我无法在本地复制错误
我已按此顺序完成了以下操作:
来自类-wp.php:
foreach ( (array) $rewrite as $match => $query ) {
// If the requested file is the anchor of the match, prepend it to the path info.
if ( ! empty( $requested_file ) && strpos( $match, $requested_file ) === 0 && $requested_file != $requested_path ) {
$request_match = $requested_file . '/' . $requested_path;
}
if ( preg_match( "#^$match#", $request_match, $matches ) ||
preg_match( "#^$match#", urldecode( $request_match ), $matches ) ) {
if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
// This is a verbose page match, let's check to be sure about it.
$page = get_page_by_path( $matches[ $varmatch[1] ] );
if ( ! $page ) {
continue;
}
$post_status_obj = get_post_status_object( $page->post_status );
if ( ! $post_status_obj->public && ! $post_status_obj->protected
&& ! $post_status_obj->private && $post_status_obj->exclude_from_search ) {
continue;
}
}
// Got a match.
$this->matched_rule = $match;
break;
}
}
我在互联网上搜索了这方面的答案,但一无所获。请让 WordPress 迷们发言。
谢谢大家的帮助。这最终与一个名为“事件日历”的插件发生冲突。如果您创建名为“事件”的页面,并将事件日历默认页面“事件”更改为其他内容,则会发生此错误。由于它是第三方应用程序,我只想寻找其他东西来满足我的需求。通过从插件目录中完全删除该文件夹,错误将被清除。
除了主页之外,我在所有页面上都遇到了同样的错误。当我将永久链接从“Postname”更改为“Simple”(pageid)时,错误消失了。当我切换回来时,错误也回来了。 最后,我尝试在“设置”->“常规”->“WordPress 地址(URL)”和“站点地址(URL)”中的基本 URL 末尾添加斜杠。 保存设置后,斜杠消失了(因为拥有它是无效的),但问题也解决了。
停用事件日历插件消除了错误。在我删除名为“events”的页面后发生错误。
就我个人而言,我发现解决此问题的最佳方法就是隐藏警告 - 因为它不会影响网站的性能。在某些情况下,%postname% 永久链接很重要,例如在博客上。
要隐藏错误,只需将这些行添加到您的 wpconfig 文件中:
定义('WP_DEBUG', false);
ini_set('display_errors','关闭');
ini_set('error_reporting', E_ALL );
定义('WP_DEBUG',假);
定义('WP_DEBUG_DISPLAY', false);