【问题标题】:Warning: preg_match(): Compilation failed: quantifier does not follow a repeatable item at offset 1 in wp-includes/class-wp.php on line 222警告:preg_match():编译失败:量词不跟随第 222 行 wp-includes/class-wp.php 中偏移量 1 处的可重复项
【发布时间】:2020-01-12 19:27:28
【问题描述】:

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

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

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

来自class-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 迷们说话。

【问题讨论】:

  • 嗨 Zach,你试过换主题吗?像 WP 默认主题?
  • 是的。错误仍然存​​在。
  • $match的内容是什么?我怀疑里面有量词。
  • 您可以尝试重新安装 WordPress 吗?这听起来像是一个糟糕的安装或托管问题。什么都没有了……
  • @toto 我不确定它代表什么,也就是说......它必须与页面上引用内容的链接有关。 (例如订单、页面、帖子等...)。我不确定匹配 url 的目的是什么,因为我会以不同的方式编程以避免这种奇怪的用例。我真的不想再次迁移,哈哈……如果必须,我会的,但这只是一个利益相关者批准站点。仪表板错误未显示在前端。任何时候它都必须迭代多个页面链接/编辑选项。

标签: php regex wordpress woocommerce genesis


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    更改固定链接设置

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

    enter image description here

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 谢谢!这让我发疯了。如果我禁用漂亮的永久链接,它会“修复”它,这显然是不可接受的。这解决了它。
      • 我明白你的意思!花了我一分钟。很高兴能对某人有所帮助。
      • 经过一个小时的搜索解决方案,这解决了我的问题。您必须为您的活动提供一个页面。我相信这个错误已在更高版本中修复。
      • 所以,对我来说,首先,这是针对“事件管理器”WordPress 插件 (wordpress.org/plugins/events-manager)。出现问题是因为“事件页面”设置为不存在的页面(已被删除)-菜单:“事件...设置...页面选项卡...事件列表/存档部分...活动页面下拉菜单”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2022-11-22
      • 2014-11-30
      • 1970-01-01
      相关资源
      最近更新 更多