prosource

가변 제품의 각 변동 설정에 사용자 정의 치수 필드 추가

probook 2023. 10. 5. 23:22
반응형

가변 제품의 각 변동 설정에 사용자 정의 치수 필드 추가

각 제품 변형 설정에 "Built Dimensions" 필드를 추가하려고 합니다.

다음은 제가 이루고자 하는 것에 대한 조롱입니다.

저는 다음 팁들을 따랐지만 그들은 제가 원하는 대로 행동하지 않습니다.

다른 데이터 탭 중 하나에 추가하는 것입니다.변주당 필요합니다.각 변동에는 기본 치수와 출하 치수가 있습니다.

WooCommerce 사용자 정의 테이블과의 더 나은 호환성을 위해 업데이트되었습니다.

아래의 두 개의 후크 기능을 사용하면 모의고사에서 기대하는 바를 정확하게 얻을 수 있습니다.

// Add variation custom "dimentions" fields
add_action('woocommerce_variation_options_dimensions', 'add_variation_options_built_dimensions', 10, 3);
function add_variation_options_built_dimensions($loop, $variation_data, $variation)
{
    $variation_built_lenght = get_post_meta($variation->ID, "_built_lenght", true);
    if (!$variation_built_lenght) $variation_built_lenght = "";

    $variation_built_width = get_post_meta($variation->ID, "_built_width", true);
    if (!$variation_built_width) $variation_built_width = "";

    $variation_built_height = get_post_meta($variation->ID, "_built_height", true);
    if (!$variation_built_height) $variation_built_height = "";
    ?>
    <p class="form-field form-row dimensions_field built_dimensions hide_if_variation_virtual form-row-last">

        <label for="product_built_length"><?php
    // translators: %s: dimension unit
    printf(
        __('Built dimensions (L&times;W&times;H) (%s)', 'woocommerce'),
        get_option('woocommerce_dimension_unit')
    );
    ?></label>

    <?php echo wc_help_tip(__('Built length x width x height in decimal form', 'woocommerce')); ?>
    <span class="wrap">
        <input id="product_built_length" placeholder="<?php esc_attr_e('Built length', 'woocommerce'); ?>" class="input-text wc_input_decimal" size="6" type="text" name="built_lenght_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_lenght); ?>" />
        <input placeholder="<?php esc_attr_e('Built width', 'woocommerce'); ?>" class="input-text wc_input_decimal" size="6" type="text" name="built_width_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_width); ?>" />
        <input placeholder="<?php esc_attr_e('Built height', 'woocommerce'); ?>" class="input-text wc_input_decimal last" size="6" type="text" name="built_height_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_height); ?>" />
    </span>
    </p>
    <?php
}

사용자 정의 치수 필드 값 저장:

//Save variation custom "dimensions" fields
add_action('woocommerce_admin_process_variation_object', 'save_variation_options_built_dimensions', 10, 2);
function save_variation_options_built_dimensions($variation, $loop)
{
    $built_lenght = $_POST["built_lenght_{$loop}"];
    if (!empty($built_lenght)) {
        $variation->update_meta_data('_built_lenght', sanitize_text_field($built_lenght));
    }
        
    $built_width = $_POST["built_width_{$loop}"];
    if (!empty($built_width)) {
        $variation->update_meta_data('_built_width', sanitize_text_field($built_width));
    }
        
    $built_height = $_POST["built_height_{$loop}"];
    if (!empty($built_height)) {
        $variation->update_meta_data('_built_height', sanitize_text_field($built_height));
    }
}

코드가 작동합니다.활성 하위 테마(또는 테마)의 php 파일 또는 플러그인 파일에 있습니다.

이 코드는 WooCommerce 버전 3.8 이상에서 테스트되고 작동합니다.

다음과 같은 결과를 얻을 수 있습니다.

enter image description here

언급URL : https://stackoverflow.com/questions/45172481/add-custom-dimension-fields-to-each-variation-settings-for-variable-products

반응형