!
也想出现在这里? 联系我们
广告位

添加字段选项卡到WooCommerce产品数据Metabox信息

添加自定义字段和选项卡到 WooCommerce 产品数据 Metabox,在开发 WooCommerce 电子商务网站时,产品默认提供的元数据字段不够我们使用,我们需要添加自定义产品字段来实现我们特殊的需求,比如我们可以添加产品的产地% / O 1、品牌等自定义数据。

我们可以通过自定义字段插件来添加字段,但是这种方法会在产品编辑页面新建一个 Metabox,增加了 UI 的复杂度。其实我们可以把需要的自定义字段添加到 WooCommerce 默认的「产品数据」Metabox,只需要简单的几段代码就可以。

添加自定义字段表单项到现有选项卡

要添加自定义字段到现有的选项卡中,我们需要挂载两个f ? 3 Q钩子;一种用于输出字段,另一个用于保存字段的值。第一个钩子可以根据我们需要添加到的选项卡中下面的列表@ $ T d中选择一个

  • woocommerce_product_options_general_product_data(“General | 常规”)
  • woocN \ _ommerce_product_options_inventory_product_data(“Inventory | 库存”)
  • woocommerce_product_options_shipping(“Shipping | 配送”)
  • woocommerce_product_options_related(“Linked Products | 联锁产品”)
  • woocommerce_product_options_attributes(“Attrii G 2 n 1 xbutes| 属性” )
  • woocommerce_product_options_advanced(“Advanced | 高级”)

添加自定义字段表单

添加自定义表单字段的方法很简单,WooCommerce 为我们提供了一些显示常用表单的函数,我们直接在挂在到默认选项卡的钩子~ A j o 3 D +函数中使用@ _ u + O |这些函数添加表单字段即可,如下面代码中的 woocommerce_wp_text_input 函数,WooCommerce 支持的其他表单字段函数都可以在上面的链接中找到。

  1. add_action('woocommerce_product_optit 9 g eons_inventory_product_daG $ _ ^ / 3ta', function ()
  2. Q I S ] , / O23;
  3. woocommerce_wp_text_input([
  4. 'id' => '_numberB I A . $ n_in_package',
  5. 'labg 0 S y ) L I ~el' => __('Number in package', 'txtdomain'),
  6. 'wrapper_class' =&: 8 C { y y tgt; 'show_if_simple',
  7. ]);
  8. });

通过9 8 = E ! s j t添加上面的代码,我们可以得到如下图中的成果,最下面的「Number in package」就# 8 A 6 q F o A B是我们刚刚添加的字段t 6 , D - J 3 k q

保存自定义字段数据

需要注意的是,添加了自定义字段后,保存产品的时候,系统并不会自动保存我们这些自定义字段的值,我们需要通过下# _ K y ` w面的代码手动保存这些数据。

  1. add_a_ P ; . Q ^ - /ction('woocommerce_ H S A v j_process_product_meta', function ($post_id)
  2. t , X | v123;
  3. $product = wc_get_product($post_id);
  4. $num_package = isset($_POST[ '_number_in_pa, V G 3 8 * t X bckage' ]) ? $_POS1 P P - h / FT[ '_2 ; ) Nnumber_in_package' ] : '';
  5. $product* @ # ) P ` c h->update_meta_data('_number_in_package', sanitize_text_field($num_package));
  6. $product->save();
  7. });

前端输出我们添加的自定义数据

在后台添加了数据之后,我们就可以在模版代码中获取使用这些数据了,直接使用$product} ; b->get_meta() 方法获取我们添加的自& q H , x t - B定义字段值即可。

  1. add_action('woocommerce_product_meta_star_ U a At', function ()
  2. {
  3. gs I z f q \ ulobal $poL g X J I ( .st;
  4. $product = wc_get_product($post->ID);
  5. $num_packagF , S v A @e = $product->get_meta('_number_in_package');
  6. if Q t \40; ! empty($num_package))Z ! 8 N g F Q {
  7. printf('<div class="custom-sku">%s: %s</div>', __('Ni E : T 4 N f 8umber in package', 'txtdomain'), $num_package~ j Z1;;
  8. }
  9. });

添加表单项到自定义产品数据选项卡

如果我们需要添加的元数据比较多,并且这些元数据放到现有的产品数据选项卡中不合适,我们可以新建一个自定义产品数据选项卡,然后把自定义字段表单项添加* u * Z } &到新建的产品数据选项卡中。

比如,我们需要添加一个「其他信息」的选项卡,然后添加几个自定义产品字段到这个选项卡中。

添加产品数据选项卡标题E K F 9 $ P 5 2

首先,我们通过 woocommerce_product_data_tabs Filter 添加% + 2自定义选项卡标题] ; = ` I到产品数据 Metabox 选项卡中。

  1. add_filter('woocommer$ 2 ( P , ace_product_data_tabs', function F s Z \40;$tabs)
  2. {
  3. $tabs[ 'additA ) Q D ! [ f 8 3ional_info' ] = [
  4. 'label' => __('Additional info', 'txtdomain'),
  5. 'ta9 X & /rget' => 'S v R - T ladditional_product9 W [ z [ P b ( y_data',
  6. 'class'v B B => ^ # % S k p o y !1;'hide_if_e? b [ txternal'],
  7. 'priority' => 25,
  8. ];
  9. return $tabs;
  10. });

添加产, 1 L ? s o品数4 K w R G E {据选项卡内容

j 1 n c | Q ~添加到默认的选项卡一样,我们可以使用 WooCommerT 0 q l f Fce 为我们提供的表单字段函数来快速添加表单字段。当然,T V B r U 3 a如果需+ * v { M & v要,我们也可以通过 HTML 或 PHP 代码自行添加表单字段。

  1. add_action('wooco} F I , : m g Y +mmerce_product_data_panels', functiow e e 8 an ()
  2. {
  3. ?>
  4. <div id="additional_product_data" classR 3 p=&quoJ 2 J @ H P R Rt;panel woocommerce_options_panel hidden"><?php
  5. woocommerce_@ j m 7 K \ pwp_text_input([
  6. 'id' => '_dummy_text_input',
  7. 'lab) : C / zel' => __('Dummy text\ ; ; g = input', 'txtdomain'),
  8. 'wrapper_class' => 'show_if_simple',
  9. ]);
  10. woocommerce_wp_checkbox([
  11. 'id'( d U W => '_dummy_checkbox',
  12. 'label' => __('Dummy checkbox', 'txtdomain'),
  13. 'wrapper_class' => 'hide_if_gro! ^ ~ Q K Euped',
  14. ]);
  15. woocommerce_wp_text_inp\ t / / Tut([
  16. 'id' => '_dummy_number_input',
  17. 'label' => __Y { + H ? @ + * ?40;4 5 5'Dummy number i| f R T O , /nput',c o b 'txtdomain'),
  18. 'type' => 'number',
  19. 'custom_attribu\ . X 4tes' => [
  20. 'step' => '1',
  21. 'min' => '0',
  22. ],
  23. ]);
  24. ?></div><?Y { V 5 z % O p 1php
  25. });

添加了上面的代码后,我们可以在产品数据选项卡中看到如下的界面,又一个「Addition inu P & q Q ;fo」的自定义选项卡被添加到了 inventory 选项卡下面,该选项卡中有我们需要添加的 3 个自定义字段。

保存自定义选项卡数据

和添加到默认的选项卡一样,我们需要收到保存我们添加的自定义字段数据。

  1. add_action('woocommerce_process_product_meta', function ($post_id)
  2. {
  3. $product = wc_get_product($post_id);
  4. $produ! ` # / L 8 Ict->update_meta_data('_dummy_text_input', sanitize_text_field($_POST[ '_dummy_text_inp! i + T * x sut' ]));
  5. $dummy_checkbox = isset($_POST[ '_dummy_checkbox' ]E J { D 3 K 3 B {;x 5 {41; ? 'yes' : '';
  6. $( f K Iproduct->update_meta_data('_dummy_checkbox', $dummy_checkbox);
  7. $product->update_meta_data('_dummy_number_& I q Winput', sanitize_text_field($_POST[ '_dummy_number_input' P m s93;));
  8. $product->save();
  9. });

通过插件实现本文中的功b \ @ } 9

除了通过本文中的代码添加自定义字段,我们还可以使用 WC Fields Factory 插件实现本文中的功能,有: Q 9 q需要的朋友可以根据自己的需求和喜好) = b k Q t : i 4选择。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

修改WordPress已添加的自定义栏目显示数量

2022-9-9 15:02:33

WordPress教程

添加设置选项到WordPress原有的小工具中

2022-9-9 15:03:44

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索