前几天在一个只包含函数的单文件php插件中实现了这一点。
现在我正在和WordPress Plugin Boilerplate 这是一种面向对象的方法,有很多不同的类。
简而言之,我正在查看两个不同的类/文件
includes/class-ebay-keyword-suggest.php
和admin/class-ebay-keyword-suggest-admin.php
第一个是核心插件类,第二个是特定于管理员的功能。
第一class-ebay-keyword-suggest.php
__construct()
\'s
public function __construct() {
if ( defined( \'EBAY_KEYWORD_SUGGEST_VERSION\' ) ) {
$this->version = EBAY_KEYWORD_SUGGEST_VERSION;
} else {
$this->version = \'1.0.0\';
}
$this->plugin_name = \'ebay-keyword-suggest\';
$this->load_dependencies();
$this->set_locale();
$this->define_admin_hooks();
$this->define_public_hooks();
$this->register_admin_menu();
}
load_dependencies
加载
class-ebay-keyword-suggest-admin.php
文件等。
以定义结束$this->loader
因此:
$this->loader = new Ebay_Keyword_Suggest_Loader();
define_admin_hooks
加载我的脚本和样式表
private function define_admin_hooks() {
$plugin_admin = new Ebay_Keyword_Suggest_Admin( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( \'admin_enqueue_scripts\', $plugin_admin, \'enqueue_styles\' );
$this->loader->add_action( \'admin_enqueue_scripts\', $plugin_admin, \'enqueue_scripts\' );
}
继续进行
register_admin_menu
:
private function register_admin_menu() {
$plugin_admin = new Ebay_Keyword_Suggest_Admin( $this->get_plugin_name(), $this->get_version() );
add_action( \'admin_init\', array( $plugin_admin, \'ebay_keyword_suggest_settings_init\' ) );
add_action( \'admin_menu\', array( $plugin_admin, \'ebay_keyword_suggest_add_admin_menu\' ) );
add_action( \'admin_enqueue_scripts\', array( $plugin_admin, \'enqueue_localize\' ) );
}
ebay_keyword_suggest_settings_init
是我注册选项/设置的位置
ebay_keyword_suggest_settings
带回调
public function ebay_keyword_suggest_settings_init() {
register_setting( \'pluginPage\', \'pluginPage\', array($this, \'ebay_keyword_suggest_settings\'));
add_settings_section(
\'ebay_keyword_suggest_pluginPage_section\',
__( \'Your section description\', \'\' ),
array($this, \'ebay_keyword_suggest_settings_section_callback\'),
\'pluginPage\'
);
add_settings_field(
\'ebay_keyword_suggest_checkbox_field_0\',
__( \'Settings field description\', \'\' ),
array($this, \'ebay_keyword_suggest_checkbox_field_0_render\'),
\'pluginPage\',
\'ebay_keyword_suggest_pluginPage_section\'
);
}
中的下一行
add_action
的功能
register_admin_menu
通过
ebay_keyword_suggest_add_admin_menu
public function ebay_keyword_suggest_add_admin_menu() {
add_options_page( \'eBay Keyword Suggest\', \'eBay Keyword Suggest\', \'manage_options\', \'ebay_keyword_suggest\', array($this, \'ebay_keyword_suggest_options_page\') );
}
然后我们来到这一行:
add_action( \'admin_enqueue_scripts\', array( $plugin_admin, \'enqueue_localize\' ) );
public function enqueue_localize( $hook ) {
$getoption = get_option( \'ebay_keyword_suggest_settings\' );
$enabled = $getoption[\'ebay_keyword_suggest_checkbox_field_0\'];
wp_localize_script( $this->plugin_name, \'ekw_script_vars\', array( \'enabled\' => __($enabled) ) );
}
正如您所看到的
get_option
在此变量下启动
$getoption
... 正在执行
var_dump
始终返回
false
(当然
wp_localize_script
无法正常工作,因为它没有获得正确的选项变量。
在一个php文件中实现这一点非常简单add_action
\'函数和register_setting( \'pluginPage\', \'title_char_count_settings\' );
然后用简单的get_option( \'title_char_count_settings\' );
这种面向对象的方法要复杂得多。。。我必须靠近我在想。。这个打嗝的地方在哪里?