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(字符串)- 复选框。如果选中,则复选框的值。默认为1class(字符串)config(数组)- select2custom_attributes(数组)- 要添加到字段的任何其他 HTML 属性data_type(字符串)- WooCommerce 字段类型desc_tip(布尔值)- 是否将说明显示为工具提示。默认为FALSEdescription(字符串)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- 所有子字段列自动调整大小