У меня странная проблема с расширением WC_Settings_Page. Я хочу использовать его, чтобы добавить вкладку настроек (и некоторые разделы внутри нее в разделах настроек Woocommerce.
Мой плагин основан на OOP, и у всех моих файлов есть связанное пространство имен. У меня есть основной класс, который что-то вроде этого в следующем (если вам нужно увидеть полную структуру, вы можете найти ее в моем github репо:
<?php
/**
* The file that defines the core plugin class
*
* A class definition that includes attributes and functions used across both the
* public-facing side of the site and the admin area.
*
* @package Siawood_Products
* @author Mehdi Soltani Neshan <soltani.n.mehdi@gmail.com>
* @license https://www.gnu.org/licenses/gpl-3.0.txt GNU/GPLv3
* @link https://wpwebmaster.ir
* @since 1.0.0
*/
namespace Siawood_Products\Includes\Init;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/* Some uses is hear */
use Siawood_Products\Includes\Admin\WC_Siawood_Setting_Tab1;
class Core implements Action_Hook_Interface, Filter_Hook_Interface {
/*constructor of class and other things is here.....*/
public function init_core() {
/* FYI: I checked before is woocommerce is active or not, if active, I call init_core() */
add_action( 'plugins_loaded', [ $this, 'add_setting_page' ] );
}
public function add_setting_page( ) {
new WC_Siawood_Setting_Tab1();
}
}
Чтобы убедиться, что плагин Woocommerce загружен, поэтому я можно использовать из woocommerce_loaded
hook (также я проверил это с init
, но результаты были такими же.
И WC_Siawood_Setting_Tab1
класс:
<?php
/**
* WC_Siawood_Setting_Tab Class File
*
* This file creates admin setting tab for this plugin
*
* @package Siawood_Products
* @author Mehdi Soltani Neshan <soltani.n.mehdi@gmail.com>
* @license https://www.gnu.org/licenses/gpl-3.0.txt GNU/GPLv3
* @link https://wpwebmaster.ir
* @since 1.0.1
*/
namespace Siawood_Products\Includes\Admin;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* WC_Siawood_Setting_Tab Class File
*
* This file creates admin setting tab for this plugin
*
* @package Siawood_Products
* @author Mehdi Soltani Neshan <soltani.n.mehdi@gmail.com>
* @link https://wpwebmaster.ir
*
*/
class WC_Siawood_Setting_Tab1 extends \WC_Settings_Page {
/**
* Constructor.
*
* @version 1.3.0
* @since 1.0.0
*/
function __construct() {
$this->id = 'my_settings';
$this->label = __( 'my label', 'my-textdomain-woocommerce' );
parent::__construct();
}
}
Так что, когда я запускаю мой плагин и вызов метода init_core()
, я получил эту ошибку:
Неустранимая ошибка: класс 'WC_Settings_Page' не найден в ... \ wp-content \ plugins \ siawood-products \ includes \ admin \ class-w c -siawood-setting-tab1. php в строке 29
Странно, потому что я подключил его к woocommerce_loaded или plugin_loaded, пока он не сможет загружаться после загрузки Woocommerce, но это не работает.
Как я могу решить это?