Пользовательские поля Woocommerce для вариантов, которые не обновляются - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь создать настраиваемые поля для переменных продуктов. До сих пор я использовал код с этого github: https://gist.github.com/maddisondesigns/e7ee7eef7588bbba2f6d024a11e8875a

Я изменил код для своих нужд и в настоящее время имею его в своих функциях. php:

/*
 * Add our Custom Fields to variable products
 */
function mytheme_woo_add_custom_variation_fields( $loop, $variation_data, $variation ) {

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

    // Text Field
    woocommerce_wp_text_input(
        array(
            'id'          => '_variable_article_number[' . $variation->ID . ']',
            'label'       => __( 'Article number', 'woocommerce' ),
            'placeholder' => '',
            'desc_tip'    => true,
            'description' => __( 'Article number', 'woocommerce' ),
            'value'       => get_post_meta( $variation->ID, '_variable_article_number', true ),
        )
    );

    woocommerce_wp_text_input(
        array(
            'id'          => '_variable_ean_code[' . $variation->ID . ']',
            'label'       => __( 'EAN code', 'woocommerce' ),
            'placeholder' => '',
            'desc_tip'    => true,
            'description' => __( 'EAN code', 'woocommerce' ),
            'value'       => get_post_meta( $variation->ID, '_variable_ean_code', true ),
        )
    );

    woocommerce_wp_text_input(
        array(
            'id'          => '_variable_shelf_life[' . $variation->ID . ']',
            'label'       => __( 'Shelf life', 'woocommerce' ),
            'placeholder' => '',
            'desc_tip'    => true,
            'description' => __( 'Shelf life', 'woocommerce' ),
            'value'       => get_post_meta( $variation->ID, '_variable_shelf_life', true ),
        )
    );

    echo '</div>';

}
// Variations tab
// add_action( 'woocommerce_variation_options', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After variation Enabled/Downloadable/Virtual/Manage Stock checkboxes
// add_action( 'woocommerce_variation_options_pricing', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After Price fields
// add_action( 'woocommerce_variation_options_inventory', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After Manage Stock fields
// add_action( 'woocommerce_variation_options_dimensions', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After Weight/Dimension fields
// add_action( 'woocommerce_variation_options_tax', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After Shipping/Tax Class fields
// add_action( 'woocommerce_variation_options_download', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After Download fields
add_action( 'woocommerce_product_after_variable_attributes', 'mytheme_woo_add_custom_variation_fields', 10, 3 ); // After all Variation fields

/*
 * Save our variable product fields
 */
function mytheme_woo_add_custom_variation_fields_save( $post_id ) {

    // Text Field
    $woocommerce_text_field = $_POST['_variable_text_field'][ $post_id ];
    update_post_meta( $post_id, '_variable_text_field', esc_attr( $woocommerce_text_field ) );

}
add_action( 'woocommerce_save_product_variation', 'mytheme_woo_add_custom_variation_fields_save', 10, 2 );

/*
 * Display our example custom field above the summary on the Single Product Page
 */
function mytheme_display_woo_custom_fields() {
    global $post;

    $articleNumber = get_post_meta( $post->ID, '_variable_article_number', true );
    $eanCode       = get_post_meta( $post->ID, '_variable_ean_code', true );
    $shelfLife     = get_post_meta( $post->ID, '_variable_shelf_life', true );

    if ( ! empty( $articleNumber ) ) {
        echo '<div>Article number: ' . $articleNumber . '</div>';
    }

    if ( ! empty( $articleNumber ) ) {
        echo '<div>EAN code: ' . $eanCode . '</div>';
    }

    if ( ! empty( $shelfLife ) ) {
        echo '<div>Shelf life: ' . $shelfLife . '</div>';
    }
}
add_action( 'woocommerce_single_product_summary', 'mytheme_display_woo_custom_fields', 15 );

Пользовательские поля правильно отображаются в фоновом режиме WordPress и шаблоне woocommerce: См. Здесь

Но проблема в том, что настраиваемые поля не обновляются при изменении варианта.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...