php - 带有 plugins_url 的 require_once wordpress 错误
问题描述
我正在为 wordpress 开发一个自定义插件,以向用户显示维护模式屏幕。我遵循了指南,但在调试代码时遇到了一些麻烦。xdebug 将向我显示这些错误:
警告:require_once(): http:// wrapper 在服务器配置中被 allow_url_include=0 禁用
警告:require_once(http://localhost/wordpress/wp-content/plugins/maintenance-mode/assets/maintenance.php):无法打开流:找不到合适的包装器
致命错误:require_once(): 无法打开所需的“ http://localhost/wordpress/wp-content/plugins/maintenance-mode/assets/maintenance.php ”(include_path='.:/usr/local/php5/lib/ php')
我正在使用plugins_url
加载保存maintenance.php 文件的路径,并且在我使用plugins_dir_path
的错误之前,但结果相同。
有解决办法吗?
class Maintenance {
public function init()
{
add_action( 'wp_loaded', array($this, 'maintenance_mode') );
//add_action( 'admin_init', array($this, 'maintenance_settings') );
}
public function maintenance_mode()
{
global $pagenow;
if( $pagenow !== 'wp-login.php' && !current_user_can('manage_options') && !is_admin() ){
header( $_SERVER['SERVER_PROTOCOL'] . '503 Service Temporarily Unavailable', true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
require_once plugins_url('assets/maintenance.php' ,__FILE__);
}
die();
}
}
解决方案
尝试使用plugin_dir_path( __FILE__ )
:
class Maintenance {
public function init()
{
add_action( 'wp_loaded', array($this, 'maintenance_mode') );
//add_action( 'admin_init', array($this, 'maintenance_settings') );
}
public function maintenance_mode()
{
global $pagenow;
if( $pagenow !== 'wp-login.php' && !current_user_can('manage_options') && !is_admin() ){
header( $_SERVER['SERVER_PROTOCOL'] . '503 Service Temporarily Unavailable', true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
require_once plugin_dir_path( __FILE__ ) . 'assets/maintenance.php';
}
die();
}
}
推荐阅读
- android - 删除项目后无法刷新 RecyclerView
- html - 伪活动类在 scss 文件中不起作用
- python - 在数据框中将一列拆分为两列
- c# - C# Lambda 加入 OR 条件
- javascript - 遍历和解析存储在本地存储中的数组中的 JSON 对象
- github - 从 github 拉取时如何避免 Permission denied (publickey)?
- html - 如何更改导航栏中的文本颜色
- python - 在单词末尾替换特定字符
- amazon-web-services - AWS SAM 在 template.yaml 中设置已有的 gatewayapi
- api - 使用来自输入的值的 Axios 进行 API 调用,Vue.js 3