我正在开发一个插件,当WooCommerce中存在特定的支付网关时,它将执行一些功能,并且我的插件选项被添加到与网关选项相同的选项页面是有意义的。我不想以任何方式改变网关的行为,只是在相同的选项页面上显示我的插件选项。
基于this document,我产生了这段代码。
<?php
class MyPluginClass {
/**
* Initialise the class
**/
public function init() {
// Hook into the Payment tab of WooCommerce settings and add
// options to the Gateway's options page
// (Tab's ID is 'checkout' even though the tab is called payments)
add_filter( 'woocommerce_get_settings_checkout', array($this, 'add_options_to_gateway_options_page'), 10, 2 );
}
/**
* Add options to the gateway's options page
**/
public function add_options_to_gateway_options_page( $settings, $current_section_id ) {
// If the current section is not the required gateway, return the settings
// (replace gateway_id with the actual gateway ID. this is
// the 'section' argument from the URL when viewing the gateway's options page)
if ( 'gateway_id' != $current_section_id ) return $settings;
// Create settings
$my_settings = array(
array (
'title' => __('Automation options'),
'type' => 'title',
'description' => ''
),
array(
'id' => 'my_plugin_enabled',
'name' => 'my_plugin_enabled',
'title' => __('Gateway automations', 'my_plugin'),
'label' => __('Enable gateway automations', 'my_plugin'),
'description' => __('Enable the gateway automations plugin', 'my_plugin'),
'desc_tip' => true,
'type' => 'checkbox',
'default' => 'yes'
),
array(
'type' => 'sectionend',
'id' => 'my_plugin'
)
);
return $my_settings;
}
}
$myPlugin = new MyPluginClass;
$myPlugin->init();
复选框工作正常,其值保存到数据库中,页面加载时阅读正常,页面上的其他选项沿着是如此。标题和复选框显示在屏幕上的预期位置,复选框在第一次加载时默认为选中状态。但是,标签和带有说明的工具提示不显示。
// The resulting HTML
<h2>Automation options</h2>
<table class="form-table">
<tbody>
<tr valign="top" class="">
<th scope="row" class="titledesc">Gateway automations</th>
<td class="forminp forminp-checkbox">
<fieldset>
<legend class="screen-reader-text"><span>Gateway automations</span></legend>
<label for="my_plugin_enabled">
<input name="my_plugin_enabled" id="my_plugin_enabled" type="checkbox" class="" value="1">
</label>
</fieldset>
</td>
</tr>
</tbody>
</table>
是我做错了什么还是哪里出了问题?
更新
所以我做了一点小错误。我把'description' => __('...
改为'desc' => __('...
,现在描述显示在复选框下面,但不是在帮助气泡中。奇怪的是,我在复选框下面添加了几个字段,遵循相同的方案,描述帮助气泡正在工作。
但是,'label' => __('...
仍然不适用于任何字段。
1条答案
按热度按时间yks3o0rb1#
我不认为这是正确的钩,我相信这将火对客户结帐以及。
这里有一个快速的函数来完成你所追求的,但是看起来你只能有一个“标签”或者一个工具提示,desc_tip是将它设置为工具提示的东西。
如果您正在创建自己的网关,则最好扩展现有类并使用
$this->init_form_fields();
,但如果您知道目标网关的ID,则这应该可以满足您的需求