pfaciana / wc-helpers
为编写WooCommerce代码提供额外类和函数
This package is auto-updated.
Last update: 2024-08-30 01:38:23 UTC
README
为编写WooCommerce代码提供额外类和函数
入门指南
基本用法是使用 RWC()
函数,它是 RenderWooCommerce 实例(RenderWooCommerce::get_instance()
)的别名
// Most basic version, this will create a variation metabox group with two text inputs add_action('renderwoocommerce_loaded', function () { $panel = RWC()->variationPanel(); $group = $panel->addGroup(); $group->text( 'some_text_field_A' ); $group->text( 'some_text_field_B' ); });
注意:
renderwoocommerce_loaded
在plugins_loaded
钩子中运行较早。因此,您可以在plugins_loaded
之后运行的任何操作中挂钩。
更多选项...
// Example Product Data Panels $args = [ 'id' => 'panel_id', 'label' => "Panel Ttitle", 'conditionals' => [ 'show_if_condition', 'show_if_other_condition' ], 'wrapper_class' => '', 'priority' => 1, 'icon' => "\\f469", ]; $panel = RWC()->dataPanel( $args ); // ...or Group $args = [ 'id' => 'payment_gateway', 'hook' => 'woocommerce_product_options_general_product_data', 'priority' => 1, ]; $group = RWC()->dataGroup($args); // Example Variation Panels/Groups $panel = RWC()->variationPanel(); $group = RWC()->variationGroup() // Example Addons Panels/Groups $panel = RWC()->addonPanel(); $group = RWC()->addonGroup(); // You can add fields to either a panel or a group $panel->datetime( [ 'id' => '_start_date', 'label' => 'Start Date', 'desc_tip' => TRUE, 'description' => 'When should it start?', ] ); $group->select( [ 'id' => '_some_options', 'label' => 'Select One', 'options' => [ NULL => '--- Select ---', 1 => 'Option 1', 2 => 'Option 2', 3 => 'Option 3', ], ] ); $panel->text( 'some_text_field' ); $group->hidden('some_hidden_field', [ 'conditionals' => 'show_if_something', 'filter_cb' => function ( $post_id, $post, $value, $field ) { if ( isset( $value ) ) { update_post_meta( $post_id, $field['id'], $value ); } else { delete_post_meta( $post_id, $field['id'] ); } }, ]); // Support for datalists. Can be added off the RWC() instance or the panel/group instance $color_list_id = RWC()->datalist( [ '#FF0000', '#FF9900', '#FFFF00' ] ); $group->text( '_some_color', [ 'type' => 'color', 'custom_attributes' => [ 'list' => $color_list_id ], ] );
产品数据字段的方法是 WooCommerce 提供的 woocommerce_wp_*
方法的别名,带有一些增强和额外功能。然而,如果您熟悉这些函数,则参数基本上相同。已添加 variation
和 addon
字段,以便以相同的方式工作,使调用可互换。它们像多态函数。例如,datatime()
的输入参数在 $panel
或 $group
来自 产品数据
、variation
或 addon
部分时相同。
这样做的目的是使其更容易,更重要的是,更快地编写与任何三种上下文一起工作的代码。而不是管理三组不同的代码,这些代码在产品页面的不同区域执行相同的功能。
可用字段
文本
多行文本框
隐藏
单选按钮
复选框
select
/select2
@see select2产品
变体
datetime
/datetime1
@see datetime1date
/date1
@see date1time
/time1
@see time1颜色
电子邮件
数字
密码
范围
电话
网址
可用的 $args
按字母顺序。
cbvalue
(字符串)- 复选框。如果选中,则复选框的值。默认为1
class
(字符串)config
(数组)- select2custom_attributes
(数组)- 要添加到字段的任何其他 HTML 属性data_type
(字符串)- WooCommerce 字段类型desc_tip
(布尔值)- 是否将说明显示为工具提示。默认为FALSE
description
(字符串)id
(字符串)label
(字符串)name
(字符串)options
(数组)- 单选按钮、选择、选择2、产品、变体placeholder
(字符串)style
(字符串)type
(字符串)- HTML 表单类型属性value
(字符串)- 可以从文章元数据自动填充wrapper_class
(字符串)
可用类
除了条件类(可以放置在 conditionals
$args 键中的 panels
、groups
和 fields
上)...
show_if_*
和show_if_*_is_*
hide_if_*
和hide_if_*_is_*
require_if_
和require_if_*_is_*
no_require_if_
和no_require_if_*_is_*
注意:_*_if_*_is_* 也匹配字段值。值被转换为全小写字母数字字符,并用 '_' 和 '-' 分隔。
因此,具有值为
1
的名为some_number
的字段可以具有条件show_if_some_number_is_1
。或者,如果名为
some_color
的字段具有值#FF0000
,可以有一个条件如hide_if_some_color_is__ff0000
。或者如果字段名
some_text
的值为[@field] #-100.5!
,可以有一个条件如no_require_if_some_text_is___field___-100_5_
。
...还有几个包装类(可以放置在 wrapper_class
的 $args 键中的 groups
和 fields
上)。
变异字段 wrapper_class
选项
-
form-row-first
- 字段列宽度为 50%,放在最前面 -
form-row-last
- 字段列宽度为 50%,放在最后 -
form-row-first-third
- 字段列宽度为 33.3%,放在最前面 -
form-row-middle-third
- 字段列宽度为 33.3%,放在中间 -
form-row-last-third
- 字段列宽度为 33.3%,放在最后
附加字段 wrapper_class
选项
rwc-pao-column-1-2
- 字段列宽度为 50%rwc-pao-column-1-3
- 字段列宽度为 33.3%rwc-pao-column-2-3
- 字段列宽度为 66.7%
附加组 wrapper_class
选项
rwc-pao-columns-1-2
- 所有子字段列宽度为 50%rwc-pao-columns-1-3
- 所有子字段列宽度为 33%rwc-pao-columns
- 所有子字段列自动调整大小