pfaciana/wc-helpers

为编写WooCommerce代码提供额外类和函数

1.0.1 2023-02-03 08:28 UTC

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_loadedplugins_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_* 方法的别名,带有一些增强和额外功能。然而,如果您熟悉这些函数,则参数基本上相同。已添加 variationaddon 字段,以便以相同的方式工作,使调用可互换。它们像多态函数。例如,datatime() 的输入参数在 $panel$group 来自 产品数据variationaddon 部分时相同。

这样做的目的是使其更容易,更重要的是,更快地编写与任何三种上下文一起工作的代码。而不是管理三组不同的代码,这些代码在产品页面的不同区域执行相同的功能。

可用字段

  • 文本
  • 多行文本框
  • 隐藏
  • 单选按钮
  • 复选框
  • select / select2 @see select2
  • 产品
  • 变体
  • datetime / datetime1 @see datetime1
  • date / date1 @see date1
  • time / time1 @see time1
  • 颜色
  • 电子邮件
  • 数字
  • 密码
  • 范围
  • 电话
  • 网址

可用的 $args

按字母顺序。

  • cbvalue(字符串)- 复选框。如果选中,则复选框的值。默认为 1
  • class(字符串)
  • config(数组)- select2
  • custom_attributes(数组)- 要添加到字段的任何其他 HTML 属性
  • data_type(字符串)- WooCommerce 字段类型
  • desc_tip(布尔值)- 是否将说明显示为工具提示。默认为 FALSE
  • description(字符串)
  • id(字符串)
  • label(字符串)
  • name(字符串)
  • options(数组)- 单选按钮、选择、选择2、产品、变体
  • placeholder(字符串)
  • style(字符串)
  • type(字符串)- HTML 表单类型属性
  • value(字符串)- 可以从文章元数据自动填充
  • wrapper_class(字符串)

可用类

除了条件类(可以放置在 conditionals $args 键中的 panelsgroupsfields 上)...

  • 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 键中的 groupsfields 上)。

变异字段 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 - 所有子字段列自动调整大小