Woocommerce Settings API 如何使用

优质
小牛编辑
134浏览
2023-12-01

Woocommerce Settings Api通常用于保存和读取Shipping methods(送货方式)和Payment gateways(支付网关)的设置。

定义选项

在构造函数中调用下列代码来定义选项

$this->init_form_fields();

选项具体有哪些内容应该提前定义

/**
 * Initialise Gateway Settings Form Fields
 */
 function init_form_fields() {
     $this->form_fields = array(
     'title' => array(
          'title' => __( 'Title', 'woocommerce' ),
          'type' => 'text',
          'description' => __( 'This controls the title which the user sees during checkout.', 'woocommerce' ),
          'default' => __( 'PayPal', 'woocommerce' )
          ),
     'description' => array(
          'title' => __( 'Description', 'woocommerce' ),
          'type' => 'textarea',
          'description' => __( 'This controls the description which the user sees during checkout.', 'woocommerce' ),
          'default' => __("Pay via PayPal; you can pay with your credit card if you don't have a PayPal account", 'woocommerce')
           )
     );
} // End init_form_fields()

这段代码定义了两个选项,title和description,分别是text field和textarea field。

定义具体选项的格式如下

'option_name' => array(
     'title' => 'Title for your option shown on the settings page',
     'description' => 'Description for your option shown on the settings page',
     'type' => 'text|password|textarea|checkbox|select|multiselect',
     'default' => 'Default value for the option',
     'class' => 'Class for the input',
     'css' => 'CSS rules added line to the input',
     'label' => 'Label', // checkbox only
     'options' => array(
          'key' => 'value'
     ) // array of options for select/multiselects only
)

在后台显示管理员选项

创建admin_options方法,并包含如下代码

function admin_options() {
 ?>
 <h3><?php _e('You plugin name','woocommerce'); ?></h3>
 <table class="form-table">
 <?php $this->generate_settings_html(); ?>
 </table> <?php
 }

该方法会输出相应的管理员选项。

保存管理员选项

在构造函数中通过钩子函数来保存选项。

保存支付方式的选项(Payment gateways)

add_action('woocommerce_update_options_payment_gateways', array(&$this, 'process_admin_options'));

保存送货方式的选项(Shipping method)

add_action('woocommerce_update_options_shipping_methods', array(&$this, 'process_admin_options'));

如何使用保存的设置

在构造函数中初始化设置,调用下面的代码可以给settings成员赋值

// Load the settings.
$this->init_settings();

之后就可以访问定义的设置了,例如获取title和description的值,只需要访问$this->settings

// Define user set variables
 $this->title = $this->settings['title'];
 $this->description = $this->settings['description'];

创建不同类型的选项的代码示例

textarea

'my_textarea' =>  array(
	'title' =>	__('Textarea示例'),
	'type' => 'textarea',
	'description' => __('一个textarea的例子'),
	'css'=>'width:400px; height:200px'
)

select

'my_textarea' =>  array(
	'title' =>	__('Select下拉菜单示例'),
	'type' => 'select',
	'options' => array(
		'option value 1' => 'option label 1',
		'option value 2' => 'option label 2',
		'option value 3' => 'option label 3'
	),
	'description' => __('一个select下拉菜单的例子'),
)

multiselect多选下拉菜单

'my_textarea' =>  array(
    'title' =>    __('多选Select下拉菜单示例'),
    'type' => 'multiselect',
    'options' => array(
        'option value 1' => 'option label 1',
        'option value 2' => 'option label 2',
        'option value 3' => 'option label 3'
    ),
    'description' => __('一个多选select下拉菜单的例子'),
)

checkbox

'my_textarea' =>  array(
	'title' =>	__('checkbox示例'),
	'type' => 'checkbox',
	'label' => '选项名称',
	'description' => __('一个checkbox的例子')
)

password

'my_textarea' =>  array(
	'title' =>	__('Password示例'),
	'type' => 'password',
	'description' => __('一个密码输入框的的例子')
)