上文提到,无言创建了一个叫$amazon_link的函数。
这个函数的作用是让产品跳转到自定的亚马逊购买页面,那么要如何在WooCommerce插件中添加一个这样的自定义字段呢,下面无言就来讲讲。
本文参考Brain的技术笔记的文章,文章名:WordPress后台定制-为WooCommerce产品增加自定义字段
以下代码放入主题functions.php的文件中。
WordPress后台-为WooCommerce产品中加入一个输入框
下面代码生成的效果将出现在WooCommerce产品-产品数据-常规
// WordPress后台定制-为WooCommerce产品增加自定义字段 add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' ); function woo_add_custom_general_fields() { global $woocommerce, $post; echo '<div class="options_group">'; woocommerce_wp_text_input( array( 'id' => 'amazon_link', //自定义字段的id 'label' => __( '亚马逊链接', 'woocommerce' ), //自定义字段在后台显示的名字 'placeholder' => '添加亚马逊的购物链接', 'desc_tip' => 'true',//如果有了这一行,字段输入框后面会多出一个问号小图标,description的值会在鼠标移到小图标的时候显示 'description' => __( '请填写此产品的购买链接.', 'woocommerce' ) ) ); echo '</div>'; }
WordPress后台-保存该输入框的数据
这里需要注意,保存的值是你前面新增字段的id,我的字段名称是amazon_link,那就要保存这个名称获取的值
// WordPress后台定制-存储WooCommerce产品自定义字段 add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' ); function woo_add_custom_general_fields_save( $post_id ){ $woocommerce_amazon_link = $_POST['amazon_link']; if( !empty( $woocommerce_amazon_link ) ){ update_post_meta( $post_id, 'amazon_link', esc_attr( $woocommerce_amazon_link ) ); }else { delete_post_meta( $post_id, $meta_key); } //对于checkbox,可以这么写 $woocommerce_checkbox = isset( $_POST['_checkbox'] ) ? 'yes' : 'no'; update_post_meta( $post_id, '_checkbox', $woocommerce_checkbox ); }
输出方法
后台添加好字段并能保存后,那么就需要让该字段内容在前端显示出来了
echo get_post_meta( $post->ID, '_pro_mainStone', true ); echo get_post_meta( get_the_ID(), '_pro_mainStone', true );
无言在前文中提到的$amazon_link此函数就是为了获取这个后台添加的链接
$amazon_link = get_post_meta( get_the_ID(), 'amazon_link', true );
当然表单中还经常会用到下拉框,代码如下
woocommerce_wp_select( array( 'id' => 'Custom_fields', //自定义字段的id 'label' => __( '自定义名称', 'woocommerce' ), //自定义字段在后台显示的名字 'options' => array( //定义各个选项 'xx' => __( 'xx', 'woocommerce' ), 'xx' => __( 'xx', 'woocommerce' ), ) ) );