Я пытаюсь создать настраиваемые поля для переменных продуктов. До сих пор я использовал код с этого 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: См. Здесь
Но проблема в том, что настраиваемые поля не обновляются при изменении варианта.
Спасибо