如何仅为WordPress仪表盘调整max_execution_time(排除admin-ajax)
仅针对WordPress仪表盘调整max_execution_time的方案
核心逻辑
精准匹配仪表盘首页请求,排除admin-ajax.php及其他后台页面,仅在加载仪表盘时提升执行超时时间。
方案一:PHP代码实现(推荐)
将以下代码添加到自定义插件(优先选择,避免主题更新覆盖)或当前主题的functions.php文件末尾:
// 仅为仪表盘首页提升执行超时时间 add_action('init', 'custom_dashboard_extend_execution_time'); function custom_dashboard_extend_execution_time() { // 校验:后台环境 + 非AJAX请求 + 当前为仪表盘首页 if (is_admin() && !wp_doing_ajax() && basename($_SERVER['SCRIPT_FILENAME']) === 'index.php') { // 设置超时时间为300秒(可按需修改) ini_set('max_execution_time', 300); // 部分主机需同步调整输入超时时间 ini_set('max_input_time', 300); } }
代码说明
is_admin():确保仅在wp-admin后台执行!wp_doing_ajax():排除admin-ajax异步请求,不影响后台其他动态操作basename($_SERVER['SCRIPT_FILENAME']) === 'index.php':精准匹配仪表盘首页(wp-admin/index.php),不会波及产品、订单等其他后台页面
方案二:.htaccess条件规则(当ini_set无效时)
如果主机禁用了ini_set函数,可在网站根目录的.htaccess中添加以下规则:
<Files "index.php"> <If "%{REQUEST_URI} =~ m#^/wp-admin/$#"> php_value max_execution_time 300 php_value max_input_time 300 </If> </Files>
规则说明
仅当请求路径为/wp-admin/(即仪表盘首页,默认自动指向index.php)时,才触发超时时间调整,完全不会影响admin-ajax或其他后台页面。
注意事项
- 自定义插件方式更安全,避免修改核心文件或全局配置
- 若.htaccess规则无效,需联系主机服务商确认是否允许通过该方式调整PHP参数
- 300秒为示例值,可根据实际加载速度调整,避免设置过大浪费服务器资源
内容的提问来源于stack exchange,提问作者CRAIG
相关产品推荐
相关产品推荐

