Php 在所选产品变化价格后添加自定义字段值

Php 在所选产品变化价格后添加自定义字段值,php,wordpress,woocommerce,price,product-variations,Php,Wordpress,Woocommerce,Price,Product Variations,我们为简单产品添加了一个选择字段,以便我们可以定义价格单位,并在单个产品页面上显示价格后的单位。这个很好用 此外,我们还为可变产品添加了一个选择字段,以定义每个变化的价格单位。此价格单位应显示在产品页面上的变动价格之后: <?php function mytheme_woo_add_custom_variation_fields( $loop, $variation_data, $variation ) { echo '<div class="options_g

我们为简单产品添加了一个选择字段,以便我们可以定义价格单位,并在单个产品页面上显示价格后的单位。这个很好用

此外,我们还为可变产品添加了一个选择字段,以定义每个变化的价格单位。此价格单位应显示在产品页面上的变动价格之后:

<?php

function mytheme_woo_add_custom_variation_fields( $loop, $variation_data, $variation ) {

    echo '<div class="options_group form-row form-row-full">';

    $value = get_post_meta( $post->ID, '_variable_select_field', true );
    if( empty( $value ) ) $value = '';
    // Select
    woocommerce_wp_select(
        array(
            'id'      => '_variable_select_field[' . $variation->ID . ']',
            'label'   => __( 'Mengeneinheit', 'woocommerce' ),
            'value' => get_post_meta( $variation->ID, '_variable_select_field', true ),
            'options' => array(
                ''          => __( 'ohne', 'woocommerce' ),
                'Stück'     => __( 'Stück', 'woocommerce' ),
                'Paar'      => __( 'Paar', 'woocommerce' ),
                'Karton'   => __( 'Karton', 'woocommerce' ),
                'Packung'   => __( 'Packung', 'woocommerce' ), 
                'Set'   => __( 'Set', 'woocommerce' ),              
                'lfm'       => __( 'Laufmeter', 'woocommerce' ),
                'm²'        => __( 'm2', 'woocommerce' ),
                )
        )
    );
    echo '</div>';
}

// Variations tab
add_action( 'woocommerce_variation_options_pricing', 'mytheme_woo_add_custom_variation_fields', 10, 3 );


// Add custom field for variations
function load_variation_settings_fields( $variations ) {
$variations['_variable_select_field'] = get_post_meta( $variations[ 'variation_id' ], '_variable_select_field', true );
  return $variations;
}

add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );

//Save variable product field
function mytheme_woo_add_custom_variation_fields_save( $post_id ){

    $woocommerce_select_field = $_POST['_variable_select_field'][ $post_id ];
    update_post_meta( $post_id, '_variable_select_field', esc_attr( $woocommerce_select_field ) );
}
add_action( 'woocommerce_save_product_variation', 'mytheme_woo_add_custom_variation_fields_save', 10, 2 );


/* Display the custom field after the price */
function mytheme_display_woo_custom_fields( $price ){
    global $post, $product;

    if ( $product->is_type( 'variable' ) ){
        $variation_price_unit = get_post_meta( $post->ID, '_variable_select_field', true );
        $price .= $variation_price_unit;
    }
        return $price;  
}

add_action( 'woocommerce_get_price_html', 'mytheme_display_woo_custom_fields', 15 );




这个简单的代码片段将在选择的变动价格之后显示相关的价格单位,如下所示:

add_filter( 'woocommerce_available_variation', 'display_price_unit_after_variations_price_html', 10, 3) ;
function display_price_unit_after_variations_price_html( $data, $product, $variation ) {
    if ( $mengeneinheit = $variation->get_meta('_variable_select_field') )
        $data['price_html'] .= ' ' . $mengeneinheit;

    return $data;
}
代码进入活动子主题(或活动主题)的functions.php文件。测试和工作


您应该将键
\u variable\u select\u field
重命名为where,例如
\u mengeneinheit
,因为它将更加明确(或者用英语
\u price\u unit
)。

感谢您的帮助!