当前位置: 首页 > 知识库问答 >
问题:

WooCommerce:从产品变化中获取自定义字段,并将其显示在“附加信息区域”中。

万俟沛
2023-03-14

我试图在产品变体中添加一个自定义域,并在“附加信息区域”中显示产品的自定义域值。

这是我目前所掌握的:

// 1. Add custom field input @ Product Data > Variations > Single Variation
add_action( 'woocommerce_variation_options_pricing', 'Add_custom_field_to_variations', 10, 3 );
function Add_custom_field_to_variations( $loop, $variation_data, $variation ) {  
    woocommerce_wp_text_input( array(
        'id' => 'custom_field[' . $loop . ']',
        'class' => 'short',
        'label' => __( 'Custom Field', 'woocommerce' ),
        'value' => get_post_meta( $variation->ID, 'custom_field', true ) 
    ));
}

// 2. Save custom field on product variation save
add_action( 'woocommerce_save_product_variation', 'Save_custom_field_variations', 10, 2 );
function Save_custom_field_variations( $variation_id, $i ) {
    $custom_field = $_POST['custom_field'][$i];
    if ( isset( $custom_field ) ) {
        update_post_meta( $variation_id, 'custom_field', esc_attr( $custom_field ) );
    }
}

// 3. Store custom field value into variation data
add_filter( 'woocommerce_available_variation', 'Add_custom_field_variation_data' );
function Add_custom_field_variation_data( $variations ) {  
    $variations['custom_field'] = '<div class="woocommerce_custom_field">Custom Field: <span>' . get_post_meta( $variations[ 'variation_id' ], 'custom_field', true ) . '</span></div>';

    return $variations;
}

// 4. Display custom field on the additional information area
function Display_product_attributes2($product_attributes, $variations){
    $product_attributes['custom_field'] = [
        'label' => __('custom', 'text-domain'),
        'value' => get_post_meta( $variation_id, '_custom_field', true ),
    ];
    return $product_attributes;
}
add_filter('woocommerce_display_product_attributes', 'Display_product_attributes2', 10, 2);

共有1个答案

糜昌胤
2023-03-14

'value'=>get_post_meta($variation_id,'_custom_field',true)时,可以使用$variation_id,而这是未定义的。

因此,您可以使用foreach循环和$variations->get_childrement();在“附加信息区域”中添加自定义标签和值

// 4. Display custom field on the additional information area
function display_product_attributes( $product_attributes, $variations ) {
    // Get childIDs in an array
    $children_ids = $variations->get_children();

    foreach ( $children_ids as $child_id ) {
        $value = get_post_meta( $child_id, 'custom_field', true );

        // True
        if ( $value ) {
            // rows
            $product_attributes[ 'custom_field ' . $child_id ] = array(
                'label' => __('custom', 'woocommerce'),
                'value' => $value,
            );
        }
    }

    return $product_attributes;
}
add_filter('woocommerce_display_product_attributes', 'display_product_attributes', 10, 2);
 类似资料:
  • 我试图从产品变体的自定义数字字段中获取一个值,并将其作为变体价格的后缀与自定义文本一起显示。 null

  • 我成功地在后端的产品变化中的WooCommerce中创建了一个ACF自定义字段。该字段在每个变化中正确显示。 但是在编辑变体中的此字段或其他字段后,我无法再保存整个变体选项卡。加载/保存指示器圆圈继续无限旋转。并且定制字段未显示在前端的单个产品变体中。 我所做的是将以下代码添加到我的: 任何帮助都将不胜感激。

  • 目前正在使用WordPress 5.1.1和WooCommerce 3.5.7。我的WooCommerce商店有大约500种产品,由简单和多变的产品组成。 每个产品自然都有一个SKU,但每个产品也有一个称为“商品代码”的唯一ID代码。我向特定行业销售特定产品。 我已经在我的functions.php文件中添加了简单和可变产品的自定义字段的代码,目前效果很好。 我的问题是,我试图让“商品代码”出现在

  • 这就是我如何为产品变体添加管理自定义字段的方法: 保存产品变化的自定义字段保存: 将自定义字段值存储到变量数据中 该值保存并显示在单个产品页面中,但下面的函数不返回该值 尝试检索函数中自定义字段的值: 我需要得到的只是值(这是浮点数):

  • 我不只是想用钩子添加所有的自定义元数据,因为我需要对输出进行非常严格的控制。例如,对于在购物车页面中包含自定义域,下面的答案可以很好地工作:在Woocommerce购物车中显示自定义域的值&Checkout items 但我也希望它们出现在结帐、订单详细信息和电子邮件中,并完全控制它们出现的HTML(在某些情况下,它们也需要转换,例如,Unix时间戳转换为人类可读的时间)。 在模板中,我尝试了以下

  • 是否有一种方法可以在WooCommerce订单页面的每个产品下显示我的自定义SKU? 当我编辑产品时,自定义sku显示良好,但它不会显示在产品的订单页面中。我需要在订单上显示此信息,以便Zapier可以将其与产品的Visma帐户软件ArticleID匹配。 此尝试基于如何向WooCommerce产品添加(第二个)自定义sku字段的解决方案?