php - 得到未定义的变量:plugin_dir 错误,而我之前已经定义了变量
问题描述
wordpress 插件只有一个 php 文件。
我只是尝试将图标变量设置为服务器上的文件路径:
public function __construct() {
$this->id = 'offline_gateway';
$this->icon = apply_filters('woocommerce_offline_icon', $plugin_dir.'\assets\custompay.png' );
$this->has_fields = false;
$this->method_title = __( 'Offline', 'wc-gateway-offline' );
$this->method_description = __( 'Allows offline payments. Very handy if you use your cheque gateway for another payment method, and can help with testing. Orders are marked as "on-hold" when received.', 'wc-gateway-offline' );
.
.
.
}
并在代码开头添加此行以定义$plugin_dir变量:defined( 'ABSPATH' ) or exit;
$plugin_dir = ABSPATH . 'wp-content/plugins/woocommerce-gateway-offline/';
但我收到了这个 php 错误:
注意:未定义变量:/home/username/public_html/sitename/wp-content/plugins/woocommerce-gateway-offline/woocommerce-gateway-offline.php 中的 plugin_dir
> 在第 95 行
基于@the-alpha 提示,我使用define('WGO_PLUGIN_DIR', plugin_dir_path(__FILE__));
了但输出 URL 类似于以下链接,这是错误的:
如何获得正确的网址?
解决方案
如果不使用 using ,您将无法访问任何方法或函数中的全局变量global variablename
,因此您可以在构造函数中使用类似这样的东西:
public function __construct() {
global $plugin_dir; // <---
$this->id = 'offline_gateway';
$this->icon = apply_filters('woocommerce_offline_icon', $plugin_dir.'\assets\custompay.png' );
$this->has_fields = false;
$this->method_title = __( 'Offline', 'wc-gateway-offline' );
$this->method_description = __( 'Allows offline payments. Very handy if you use your cheque gateway for another payment method, and can help with testing. Orders are marked as "on-hold" when received.', 'wc-gateway-offline' );
}
或者,您可以定义一个常量,例如:
define('PLUGIN_DIR', ABSPATH . 'wp-content/plugins/woocommerce-gateway-offline/');
然后你可以直接在任何地方使用它,比如:
apply_filters('woocommerce_offline_icon', PLUGIN_DIR.'\assets\custompay.png');
顺便说一句,您不应该使用 hard-coded path
,而是可以使用plugin_dir_path(在您的主插件文件中),例如:
// Note: Use a prefix, i.e: WGO_PLUGIN_DIR (woocommerce-gateway-offline)
define('PLUGIN_DIR', plugin_dir_path(__FILE__));
注意:始终对 WordPress 中的任何全局变量/常量使用唯一前缀。
推荐阅读
- wordpress - 为了更新 PostObject 类型的自定义字段,应将什么参数格式传递给 update_post_meta()?
- javascript - 海图失真
- python - 如何使用字符串变量引用对象?(Python)
- asp.net-core - ASP.NET gRPC:如何导入其他 proto 文件?
- python - 在 selenium python 中打开和操作 500 多个 url 的最节省内存的方法
- c# - MassTransit 消息类型不能是系统类型异常
- react-native - 使用 FileSystem 从 expo 应用程序中的 blob 生成 pdf 的问题
- node.js - npm i for package.json 依赖项不安装任何东西。吉普错误!不好
- odoo - 如何在 Odoo14 EE 的条码移动视图中向线条小部件添加新的文件/值?
- javascript - 在组件挂载上从 node_modules 加载 JS