Вы не можете получить доступ к глобальной переменной внутри любого метода или функции без использования 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');
Кстати, вы не должны использовать жестко path
, вместо этого вы можете использовать plugin_dir_path (внутри вашего основного файла плагина), например:
// Note: Use a prefix, i.e: WGO_PLUGIN_DIR (woocommerce-gateway-offline)
define('PLUGIN_DIR', plugin_dir_path(__FILE__));
Примечание. Всегда используйте уникальный префикс для любой глобальной переменной / константы в WordPress.