Я пытаюсь добавить настраиваемое поле на вкладку атрибутов продукта.В нашем случае мы переименовали его в спецификацию, но не уверены, что это имеет значение.
Вот код для создания пользовательских полей, и я могу успешно манипулировать ими и размещать их на странице продукта, но не вВкладка product_attributes.
Вкладка product_attributes всегда существует для каждого продукта на нашем сайте с указанием способа его построения.
Код:
// Test in Additional Info
// -----------------------------------------
// 1. Add custom field input @ Product Data > Variations > Single Variation
add_action( 'woocommerce_variation_options_pricing', 'bbloomer_add_test_cf_to_variations', 10, 3 );
function bbloomer_add_test_cf_to_variations( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
'id' => 'test_cf[' . $loop . ']',
'class' => 'short',
'label' => __( 'Test', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, 'test_cf', true )
)
);
}
// -----------------------------------------
// 2. Save custom field on product variation save
add_action( 'woocommerce_save_product_variation', 'bbloomer_save_test_cf_variations', 10, 2 );
function bbloomer_save_test_cf_variations( $variation_id, $i ) {
$test_cf = $_POST['test_cf'][$i];
if ( ! empty( $test_cf ) ) {
update_post_meta( $variation_id, 'test_cf', esc_attr( $test_cf ) );
} else delete_post_meta( $variation_id, 'test_cf' );
}
// 3. Store custom delivery value into variation data
add_filter( 'woocommerce_available_variation', 'bbloomer_add_test_cf_variation_data' );
function bbloomer_add_test_cf_variation_data( $variations ) {
$test = get_post_meta( $variations[ 'variation_id' ], 'test_cf', true );
if( ! empty( $test ) ) {
$variations['test_cf'] = '<div>Test: <span>' . get_post_meta( $variations[ 'variation_id' ], 'test_cf', true ) . '</span></div>';
}
return $variations;
}
Обычно при добавлении пользовательских полей таким образом, Я бы добавил их в файл переопределения var.php, а затем мог бы манипулировать ими с помощью css.
Я попытался добавить следующее в product-attribute.php:
<script type="text/template" id="tmpl-variation-template">
<div class="woocommerce-variation-test">{{{ data.variation.test_cf }}}</div>
</script>
<script type="text/template" id="tmpl-unavailable-variation-template">
<p><?php _e( 'Sorry, this product is unavailable. Please choose a different combination.', 'woocommerce' ); ?></p>
</script>
Но я не могу заставить их отображаться вообще.