WooCommerce:向产品变体添加自定义字段 [英] WooCommerce : add custom fields to product variations

查看:50
本文介绍了WooCommerce:向产品变体添加自定义字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助将自定义字段添加到我的产品变体和简单产品页面.我尝试使用 RemiCorson 的信息 (http://www.remicorson.com/woocommerce-custom-fields-for-variations/),但我不断收到错误消息.我试图复制我在 该用户为 ISBN 发表的帖子 但对我不起作用.

下面代码的问题在于它没有显示在实时站点上.非常感谢所有帮助,我今天大部分时间都在试图弄清楚我做错了什么.

向 Woocommerce 中的简单产品和可变产品页面添加 6 个自定义文本字段和 1 个复选框.这些不是由购物者提供(即填写)的字段,而是我希望在我的产品页面上显示的自定义信息(而不是在标签中).

//显示字段add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields');//保存字段add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save');函数 woo_add_custom_general_fields() {全球 $woocommerce, $post;echo '

';//自定义字段将在此处创建...//文本域woocommerce_wp_text_input(大批('id' =>'_ISBN_field','标签' =>__( 'ISBN', 'woocommerce'),'占位符' =>'','desc_tip' =>'真的','说明' =>__( 'ISBN.', 'woocommerce' )));函数 woo_add_custom_general_fields_save( $post_id ){//客户文本 ISBN 字段$woocommerce_text_field = $_POST['_ISBN_field'];if( !empty( $woocommerce_text_field ) )update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) );别的update_post_meta( $post_id, '_ISBN_field', '' );}//显示自定义字段值echo get_post_meta( $post->ID, '_ISBN_field', true );}/* WooCommerce *//* ------------------------------------------------------------------------------------- *//* 启动 WooThemes 函数 - 请不要编辑此部分 *//* ------------------------------------------------------------------------------------- */

解决方案

我从来不需要为 woocommerce_product_after_variable_attributes_js 而烦恼,你只需要添加输入然后处理保存它.

自从 Remi 的文章发表以来发生的另一件事是,WooCommerce 变体元数据不再打印在 <Table> 元素中...而现在是 <div> 元素.这对于您如何构建新内容很重要.

以下是向变体添加元字段的方法:

//常规变量产品add_action('woocommerce_product_after_variable_attributes', 'add_to_variations_metabox', 10, 3);add_action( 'woocommerce_save_product_variation', 'save_product_variation', 20, 2 );/** 为每个变体添加新的输入** @param 字符串 $loop* @param 数组 $variation_data* @return 打印 HTML*/函数 add_to_variations_metabox( $loop, $variation_data, $variation ){$custom = get_post_meta( $variation->ID, '_custom', true );?><div class="variable_custom_field"><p class="form-row form-row-first"><label><?php echo __( 'Custom Data:', 'plugin_textdomain' );?></label><input type="text" size="5" name="variation_custom_data[<?php echo $loop; ?>]" value="<?php echo esc_attr( $custom ); ?>"/></p>

<?php}/**为可变产品保存额外的元信息** @param int $variation_id* @param int $i* 返回无效*/函数 save_product_variation( $variation_id, $i ){//保存自定义数据if ( isset( $_POST['variation_custom_data'][$i] ) ) {//以对您的数据类型有意义的方式清理数据$custom_data = ( trim( $_POST['variation_custom_data'][$i] ) === '' ) ?'' : sanitize_title( $_POST['variation_custom_data'][$i] );update_post_meta( $variation_id, '_custom', $custom_data );}}

I need help adding custom fields to my Product Variations and Simple Product pages. I tried using RemiCorson's info (http://www.remicorson.com/woocommerce-custom-fields-for-variations/), but I keep getting an error. I tried to duplicate what I saw in this user's posts for ISBN but it's not working for me.

The problem with the code below is that it doesn't show up on the live site. All help is greatly appreciated, I've spent most of today trying to figure out what I'm doing wrong.

Adding 6 custom text fields and 1 check box to both Simple Product and Variable Product pages in Woocommerce. These are not fields to be supplied (i.e. filled out) by the shopper, but rather custom information I want displayed on my product pages (and NOT within a tab).

// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

  echo '<div class="options_group">';

  // Custom fields will be created here...

// Text Field
woocommerce_wp_text_input( 
    array( 
        'id'          => '_ISBN_field', 
        'label'       => __( 'ISBN', 'woocommerce' ), 
        'placeholder' => '',
        'desc_tip'    => 'true',
        'description' => __( 'ISBN.', 'woocommerce' ) 
    )
);
function woo_add_custom_general_fields_save( $post_id ){

// Customer text ISBN Field
$woocommerce_text_field = $_POST['_ISBN_field'];
if( !empty( $woocommerce_text_field ) )
    update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) );
else
    update_post_meta( $post_id, '_ISBN_field', '' );
}
// Display Custom Field Value
echo get_post_meta( $post->ID, '_ISBN_field', true );

}
/* WooCommerce */

/* ----------------------------------------------------------------------------------- */
/* Start WooThemes Functions - Please refrain from editing this section */
/* ----------------------------------------------------------------------------------- */

解决方案

I have never needed to bother with woocommerce_product_after_variable_attributes_js, you just need to add the input and then deal with saving it.

Another thing that has changed since Remi's article was published is that the WooCommerce variation meta data is no longer printed in a <Table> element... and is now a <div> element. This is important for how you structure your new content.

Here's is how you'd add a meta field to a variation:

// regular variable products
add_action( 'woocommerce_product_after_variable_attributes', 'add_to_variations_metabox', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_product_variation', 20, 2 );


/*
 * Add new inputs to each variation
 *
 * @param string $loop
 * @param array $variation_data
 * @return print HTML
 */
function add_to_variations_metabox( $loop, $variation_data, $variation ){

    $custom = get_post_meta( $variation->ID, '_custom', true ); ?>

        <div class="variable_custom_field">
            <p class="form-row form-row-first">
                <label><?php echo __( 'Custom Data:', 'plugin_textdomain' ); ?></label>
                <input type="text" size="5" name="variation_custom_data[<?php echo $loop; ?>]" value="<?php echo esc_attr( $custom ); ?>" />
            </p>
        </div>

    <?php 

}

/*
 * Save extra meta info for variable products
 *
 * @param int $variation_id
 * @param int $i
 * return void
 */
function save_product_variation( $variation_id, $i ){

    // save custom data
    if ( isset( $_POST['variation_custom_data'][$i] ) ) {
        // sanitize data in way that makes sense for your data type
        $custom_data = ( trim( $_POST['variation_custom_data'][$i]  ) === '' ) ? '' : sanitize_title( $_POST['variation_custom_data'][$i] );
        update_post_meta( $variation_id, '_custom', $custom_data );
    }

}

这篇关于WooCommerce:向产品变体添加自定义字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆