You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress维护模式下运行PHP脚本

答案:完全可行,但要注意这几个细节

首先明确一点:绝大多数Coming Soon类维护模式插件的拦截逻辑,只针对前端的完整WordPress请求(比如用户访问网站首页、文章页这类常规页面)。而你直接通过include('/path/wp-load.php')加载WordPress核心的外部脚本,并不会触发插件的维护拦截机制——因为这类插件通常是通过template_redirect、init这类前端请求钩子来触发维护检查,你的脚本如果只是初始化核心、执行自定义逻辑,没有走完整的前端请求生命周期,插件的拦截代码根本不会被触发。

不过有几个关键点要注意:

  • 路径准确性:硬编码绝对路径容易出问题(比如服务器目录结构变动),推荐用服务器环境变量来拼接路径,比如:

    include($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
    

    这样能适配大多数服务器的目录配置。

  • 权限与安全:

    • 确保你的外部脚本文件有服务器的执行权限(通常是755),且wp-load.php所在目录允许脚本读取。
    • 一定要给这个脚本加访问限制!比如IP白名单或者密码验证,避免被恶意访问:
      // 示例:只允许指定IP访问
      $allowed_ips = ['192.168.1.100', '你的公网IP'];
      if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
          http_response_code(403);
          die('Access Denied');
      }
      // 再加载wp-load.php
      include($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
      
  • 极少数插件的特殊情况:
    个别维护插件可能会在WordPress核心初始化早期就挂拦截逻辑(比如plugins_loaded钩子之前),这种情况下你的脚本可能会被拦截。遇到这种情况,你可以查看插件的代码,找到它的维护检查函数,然后在加载wp-load.php之后移除对应的钩子:

    include('/path/wp-load.php');
    // 假设插件的维护检查钩子是'maintenance_mode_check',挂在'init'上
    remove_action('init', 'maintenance_mode_check');
    
  • 测试验证:
    开启维护模式后,直接访问你的外部脚本URL,测试是否能正常执行WordPress相关操作(比如调用get_post()、wp_get_current_user()等函数)。如果能正常输出结果,说明一切没问题;如果返回维护页面,再针对性调整。

内容的提问来源于stack exchange,提问作者Jean R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:36:08