WooCommerce 添加商品分类自定义字段

WooCommerce 是最流行的 wordpress 电子商务插件,在开发 WooCommerce 主题的时候,难免要添加一些自定义字段来满足我们的需求。WooCommerce 是基于 WordPress 的生态系统开发的,所以,很多 WordPress 的 API 我们都可以直接用在 WooCommerce 中。下面我们以一个为分类添加字体图标的需求来讲解一下怎么为 WooCommerce 的商品分类添加自定义字段,效果如下。
WooCommerce 添加商品分类自定义字段-云模板

添加表单到商品分类添加页面

首先是商品分类添加页面,我们添加一个图标的表单,用户填写图标的名称,我是用的字体图标,当然,也可以是图片网址。这里我们使用 WooCommerce 自定义的 product_cat_add_form_fields 来把表单添加到商品分类添加页面。

  1. // 分类添加表单
  2. function tutorialshares_taxonomy_add_new_meta_field() {
  3.     // this will add the custom meta field to the add new term page
  4.     ?>
  5.     <div class="form-field">
  6.         <label for="term_meta[term_icon]"><?php _e( '图标', 'woocommerce' ); ?></label>
  7.         <input class="regular-text" type="text" name="term_meta[term_icon]" id="term_meta[term_icon]" value="">
  8.     </div>
  9. <?php
  10. }
  11. add_action( 'product_cat_add_form_fields', 'tutorialshares_taxonomy_add_new_meta_field', 10, 2 );

添加表单到商品分类编辑页面

商品分类编辑页面用的是 product_cat_edit_form_fields,和上面的基本上是差不多的,只不过多了已经添加过的数据,其实两个是可以合并成一个功能的。

  1. // 分类编辑表单
  2. function tutorialshares_taxonomy_edit_meta_field($term) {
  3.     // put the term ID into a variable
  4.     $t_id = $term->term_id;
  5. 
    
  6.     // retrieve the existing value(s) for this meta field. This returns an array
  7.     $term_meta = get_option( "taxonomy_$t_id" ); ?>
  8.     <tr class="form-field">
  9.     <th scope="row" valign="top"><label for="term_meta[term_icon]"><?php _e( '图标', 'woocommerce' ); ?></label></th>
  10.         <td>
  11.             <input class="regular-text" type="text" name="term_meta[term_icon]" id="term_meta[term_icon]" value="<?php echo esc_attr( $term_meta['term_icon'] ) ? esc_attr( $term_meta['term_icon'] ) : ''; ?>">
  12.         </td>
  13.     </tr>
  14. <?php
  15. }
  16. add_action( 'product_cat_edit_form_fields', 'tutorialshares_taxonomy_edit_meta_field', 10, 2 );

最后,我们需要把提交的数据保存到数据库中

WooCommercce 直接把商品分类字段保存在了 WordPress 的 wp_options 数据表中,个人觉得这是一个很好的设计,因为商品分类的自定义字段一般不会很多,专门为此新建一个数据表就增加了很多复杂度,WordPress 的 wp_options 基本上是 k-v 性质的,也很适合自定义字段这种类型的数据。WordPress 也提供了很方便的功能接口,直接用 update_option 保存数据即可,

  1. // 保存分类数据
  2. function save_taxonomy_custom_meta( $term_id ) {
  3.     if ( isset( $_POST['term_meta'] ) ) {
  4.         $t_id = $term_id;
  5.         $term_meta = get_option( "taxonomy_$t_id" );
  6.         $cat_keys = array_keys( $_POST['term_meta'] );
  7.         foreach ( $cat_keys as $key ) {
  8.             if ( isset ( $_POST['term_meta'][$key] ) ) {
  9.                 $term_meta[$key] = $_POST['term_meta'][$key];
  10.             }
  11.         }
  12.         // Save the option array.
  13.         update_option( "taxonomy_$t_id", $term_meta );
  14.     }
  15. }
  16. add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
  17. add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );

调用商品分类自定义字段数据

从上面保存数据的代码中可以看出来。WooCommerce 把商品分类的自定义字段保存到 wp_options 数据表中了,调用这个数据的时候,我们直接用 WordPress 的 get_option 函数就可以了。

  1. $meta_field_array = get_option('taxonomy_'. $term->term_id);
  2. $meta_icon = $meta_field_array['term_icon'];

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/90662

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买