警告:preg_match():编译失败:量词未遵循 wp-includes/class-wp.php 第 222 行中偏移量 1 处的可重复项

问题描述 投票:0回答:5

任何包含页面类型帖子、订单类型帖子或帖子的页面都会显示此错误。这仅在托管环境中可见。我无法在本地复制错误

我已按此顺序完成了以下操作:

  1. 停用所有插件
  2. 进入设置 -> 永久链接并重新保存 %postname% 选项
  3. 验证错误仍然存在,没有插件和永久链接重置。
  4. 更新了所有插件和主题。
  5. 已验证的错误仍然存在。
  6. 在本地执行相同的步骤,无法复制此问题。

来自类-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 迷们发言。

php regex wordpress woocommerce genesis
5个回答
6
投票

谢谢大家的帮助。这最终与一个名为“事件日历”的插件发生冲突。如果您创建名为“事件”的页面,并将事件日历默认页面“事件”更改为其他内容,则会发生此错误。由于它是第三方应用程序,我只想寻找其他东西来满足我的需求。通过从插件目录中完全删除该文件夹,错误将被清除。


4
投票

更改固定链接设置

在您的 WordPress 网站中,在设置下 -> 如果永久链接设置为 帖子名称,请尝试将其更改为 自定义结构,反之亦然。 这帮助我修复了这个错误。

在此输入图片描述


1
投票

除了主页之外,我在所有页面上都遇到了同样的错误。当我将永久链接从“Postname”更改为“Simple”(pageid)时,错误消失了。当我切换回来时,错误也回来了。 最后,我尝试在“设置”->“常规”->“WordPress 地址(URL)”和“站点地址(URL)”中的基本 URL 末尾添加斜杠。 保存设置后,斜杠消失了(因为拥有它是无效的),但问题也解决了。


0
投票

停用事件日历插件消除了错误。在我删除名为“events”的页面后发生错误。


0
投票

就我个人而言,我发现解决此问题的最佳方法就是隐藏警告 - 因为它不会影响网站的性能。在某些情况下,%postname% 永久链接很重要,例如在博客上。

要隐藏错误,只需将这些行添加到您的 wpconfig 文件中:

定义('WP_DEBUG', false);
ini_set('display_errors','关闭');
ini_set('error_reporting', E_ALL );
定义('WP_DEBUG',假);
定义('WP_DEBUG_DISPLAY', false);

© www.soinside.com 2019 - 2024. All rights reserved.