Yep, weil Du leider 2x Actions vergessen hast.
Damit funktioniert es bei mir, die Custom Fields auszugeben:
PHP
/**
* Create new fields for variations
*
*/
add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );
function variation_settings_fields( $loop, $variation_data, $variation ) {
// Text Field
woocommerce_wp_text_input(
array(
'id' => '_text_field[' . $variation->ID . ']',
'label' => __( 'My Text Field', 'woocommerce' ),
'placeholder' => 'http://',
'desc_tip' => 'true',
'description' => __( 'Enter the custom value here.', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, '_text_field', true )
)
);
}
/**
* Save new fields for variations
*
*/
function save_variation_settings_fields( $post_id ) {
// Text Field
$text_field = $_POST['_text_field'][ $post_id ];
if( ! empty( $text_field ) ) {
update_post_meta( $post_id, '_text_field', esc_attr( $text_field ) );
}
}
// Add New Variation Settings
add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );
/**
* Add custom fields for variations
*
*/
function load_variation_settings_fields( $variations ) {
// duplicate the line for each field
$variations['text_field'] = get_post_meta( $variations[ 'variation_id' ], '_text_field', true );
return $variations;
}
Alles anzeigen
Und jetzt machst Du einfach folgendes:
In der variation.php im Ordner /woocommerce/templates/single-product/add-to-cart/ fügst Du ein unter
PHP
<div class="woocommerce-variation-description">
{{{ data.variation.variation_description }}}
</div>
<div class="woocommerce-variation-price">
{{{ data.variation.price_html }}}
</div>
<div class="woocommerce-variation-availability">
{{{ data.variation.availability_html }}}
</div>
Alles anzeigen
die Zeilen
Damit wird dann Dein Custom Field angezeigt. Das sind woocommerce-Bordmittel, Du kannst das auch woanders hinsetzen, den div, aber er muss innerhalb der <script>-Tags stehen.
Test2 und test3 sind meine Custom Fields, also die Werte, die ich eingegeben habe.