【问题标题】:Handling product dimensions unit at product level in Woocommerce在 Woocommerce 中处理产品级别的产品尺寸单元
【发布时间】:2018-07-14 10:56:07
【问题描述】:

我想在 wordpress WooCommerce 中显示产品高度、宽度和长度的英寸和英尺 dropwon

您可以在下面看到带有标题的产品:

网站链接:https://asiatic.endroid1.com/product/modern

我在后端 wordpress 仪表板 woocommerce > 设置 > 产品中有下拉选项。但在编码中没有,现在我需要在前端使用此选项。例如,当客户使用产品时。他从下拉列表中选择英尺或英寸

【问题讨论】:

    标签: php wordpress drop-down-menu woocommerce jquery-plugins


    【解决方案1】:

    在下面的代码中,您将找到从产品自定义字段(选择字段)后端设置动态获取维度单位的完整方法:

    // Add custom fields to product shipping tab
    add_action( 'woocommerce_product_options_dimensions', 'add_product_dimensions_unit_option');
    function add_product_dimensions_unit_option(){
        woocommerce_wp_select( array(
            'id'          => '_dimensions_unit',
            'label'       => __( 'Dimensions unit', 'woocommerce' ),
            'options'       => array(
                'in' => __( 'Inch', 'woocommerce' ),
                'ft' => __( 'Foot', 'woocommerce' ),
            ),
        ) );
    }
    
    // Save the custom fields values as meta data
    add_action( 'woocommerce_process_product_meta', 'save_product_dimensions_unit_option' );
    function save_product_dimensions_unit_option( $post_id ){
        if( isset( $_POST['_dimensions_unit'] ) )
            update_post_meta( $post_id, '_dimensions_unit', esc_attr( $_POST['_dimensions_unit'] ) );
    
    }
    
    // Dynamic dimension unit from a product custom field
    add_filter( 'woocommerce_format_dimensions', 'custom_dimention_unit', 20, 2 );
    function custom_dimention_unit( $dimension_string, $dimensions ){
        // Get the dimension unit from product custom field value
        $dimension_unit = get_post_meta( get_the_id(), '_dimensions_unit', true );
    
        // HERE set the Default dimention unit  <=========  <=========  <=========
        if( empty($dimension_unit) ) $dimension_unit = 'in';
    
        $dimension_string = implode( ' x ', array_filter( array_map( 'wc_format_localized_decimal', $dimensions ) ) );
    
        if ( ! empty( $dimension_string ) ) {
            $dimension_string .= ' ' . $dimension_unit;
        } else {
            $dimension_string = __( 'N/A', 'woocommerce' );
        }
    
        return $dimension_string;
    }
    

    此代码位于您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且有效。

    在后端产品编辑页面设置中:

    在前端:


    代码基于这两个相关的答案:


    产品变体的附加代码,在后端:

    // Add custom fields to product variation settings
    add_action( 'woocommerce_product_after_variable_attributes','add_variation_dimensions_unit_option', 10, 3 );
    function add_variation_dimensions_unit_option( $loop, $variation_data, $variation ){
    
        $dimensions_unit = get_post_meta($variation->ID,"_dimensions_unit", true );
        if( ! $dimensions_unit ) $dimensions_unit = "";
    
        echo '<p class="form-field dimensions_field">';
        woocommerce_wp_select( array(
            'id'          => '_dimensions_unit' . '_' . $loop,
            'label'       => __( 'Dimensions unit', 'woocommerce' ),
            'options'       => array(
                'in' => __( 'Inches', 'woocommerce' ),
                'ft' => __( 'Feet', 'woocommerce' ),
            ),
            'value'       => $variation_diameter
        ) );
        echo '</p>';
    }
    
    // Save product variation custom fields values
    add_action( 'woocommerce_save_product_variation','save_variation_dimensions_unit_option', 10 ,2 );
    function save_variation_dimensions_unit_option( $variation_id, $loop ){
        $built_lenght = $_POST["_dimensions_unit_$loop"];
        if( isset($built_lenght) )
            update_post_meta( $variation_id, '_dimensions_unit', esc_attr($built_lenght) );
    }
    

    此代码位于您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且有效。

    【讨论】:

    • 感谢您的第一个代码运行良好.......................但是第二个代码不工作...... .....................我想在前端的单个产品视图中显示下拉英寸和英尺......当客户点击下拉时..如果客户选择英寸产品以英寸为单位显示,如果客户选择英尺产品以英尺为单位显示尺寸............再次感谢
    • 有没有办法从“WooCommerce->设置->常规->产品->测量”设置中编辑它?这是一个图像解释:imgur.com/D5t321T
    • @chromechris 也许可以试试:stackoverflow.com/a/51308366/3730754
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 2015-08-08
    • 2018-03-01
    • 2013-08-18
    • 1970-01-01
    • 2017-02-01
    • 2019-06-20
    • 1970-01-01
    相关资源
    最近更新 更多