如何向设置选项卡添加一个部分
当您为 WooCommerce 构建一个需要某种设置的扩展程序时,重要的是要问自己:这些设置应该放在哪里? 如果您的扩展程序只有几个简单的设置,您真的需要为此创建一个新的选项卡吗? 最有可能的答案是“不”。
何时创建部分
假设我们有一个扩展程序,它为单个产品页面添加一个滑块。 此扩展程序只有几个选项:
- 自动插入到单个产品页面(复选框)
- 滑块标题(文本字段)
这只有两个选项,并且与 产品 密切相关。 我们可以很容易地将它们添加到核心 WooCommerce 产品设置(WooCommerce > 设置 > 产品),但这对于用户来说可能不够友好。 用户最初可能不知道在哪里查找,因此他们必须扫描所有产品选项,并且很难/无法直接链接这些选项。 幸运的是,从 WooCommerce 2.2.2 开始,有一个新的过滤器,允许您在核心设置选项卡下添加一个新的 部分。
如何创建部分
我们将通过单独的函数来演示如何操作,但您应该创建一个类来存储所有设置方法。
首先,您需要添加该部分,这可以通过钩入 woocommerce_get_sections_products 过滤器来实现:
/**
* 在产品选项卡下创建部分
*/
add_filter( 'woocommerce_get_sections_products', 'wcslider_add_section' );
function wcslider_add_section( $sections ) {
$sections['wcslider'] = __( 'WC Slider', 'text-domain' );
return $sections;
}
wc-create-section-beneath-products.php
请确保将 wcslider 部分更改为适合您扩展程序的名称/文本域。 woocommerce_get_sections_products 过滤器的重要部分是,最后的 products 表示您想要添加部分的选项卡。 如果您想将一个新选项卡添加到帐户部分,您应该钩入 woocommerce_get_sections_accounts 过滤器。
如何向一个部分添加设置
现在你已经有了标签,你需要过滤 woocommerce_get_sections_products 的输出(或类似的函数)。 你应该像往常一样使用 WooCommerce 设置 API 添加设置,但在将设置添加到标签的设置数组之前,请检查当前的 %s。 例如,让我们将上面讨论的示例设置添加到我们刚刚创建的 wcslider 部分:
/**
* 向之前创建的特定部分添加设置
*/
add_filter( 'woocommerce_get_settings_products', 'wcslider_all_settings', 10, 2 );
function wcslider_all_settings( $settings, $current_section ) {
/**
* 检查当前的 %s 是否是我们想要的
**/
if ( $current_section == 'wcslider' ) {
$settings_slider = array();
// 向设置中添加标题
$settings_slider[] = array( 'name' => __( 'WC Slider Settings', 'text-domain' ), 'type' => 'title', 'desc' => __( '以下选项用于配置 WC Slider', 'text-domain' ), 'id' => 'wcslider' );
// 添加第一个复选框选项
$settings_slider[] = array(
'name' => __( '自动插入到单个产品页面', 'text-domain' ),
'desc_tip' => __( '这将自动将您的幻灯片插入到单个产品页面', 'text-domain' ),
'id' => 'wcslider_auto_insert',
'type' => 'checkbox',
'css' => 'min-width:300px;',
'desc' => __( '启用自动插入', 'text-domain' ),
);
// 添加第二个文本字段选项
$settings_slider[] = array(
'name' => __( '幻灯片标题', 'text-domain' ),
'desc_tip' => __( '这将为您的幻灯片添加一个标题', 'text-domain' ),
'id' => 'wcslider_title',
'type' => 'text',
'desc' => __( '您可以添加任何您想要的标题,通过此选项添加到您的幻灯片!', 'text-domain' ),
);
$settings_slider[] = array( 'type' => 'sectionend', 'id' => 'wcslider' );
return $settings_slider;
/**
* 如果不是,则返回标准的设置
**/
} else {
return $settings;
}
}
我们正在钩入相同的 woocommerce_get_settings_products 过滤器,但这次我们检查 $current_section 是否与我们之前定义的自定义 %s(wcslider)匹配,然后再添加我们的新设置。
使用新的设置
现在,您可以像使用任何其他 WordPress / WooCommerce 设置一样,通过 [**get_option**](http://codex.wordpress.org/Function_Reference/get_option) 函数和已定义的设置 ID 来使用您新创建的设置。 例如,要使用之前创建的 wcslider_auto_insert 选项,只需使用以下代码:get_option( 'wcslider_auto_insert' )
结论
在为 WooCommerce 创建扩展程序时,在创建设置之前,请考虑您的设置应该放置在何处。 构建一个有用的产品的关键是使其易于最终用户使用,因此适当的设置位置至关重要。 要获取有关向 WooCommerce 添加设置的更多特定信息,请查看 Settings API 文档。