WooCommerce: показать текущие SKU и GTIN на странице с переменным товаром

Есть ли способ отобразить ток SKU продукта и GTIN на странице с изменяемым продуктом? Сейчас я использую следующий код, но он работает только для простых продуктов без изменений:

add_action('woocommerce_single_product_summary', 'show_sku_and_gtin');
function show_sku_and_gtin() {
global $product, $post;
echo '<p>SKU: '.$product->sku.'</p>';
// In my case, GTIN is a custom field called "barcode"echo '<p>GTIN: '.get_post_meta($post->ID, 'barcode', 1).'</p>';
}

Я хотел бы, чтобы он обновлял SKU и GTIN динамически всякий раз, когда я выбираю другой вариант продукта на странице продукта.

1

Решение

Обновить (для вашего существующего кода в конце)

Чтобы сделать это возможным для продуктов вариантов, мы будем использовать описание динамического варианта, чтобы вставить SKU и GTIN и отобразить их динамически:

// Display product variations SKU and GTIN info
add_filter( 'woocommerce_available_variation', 'display_variation_sku_and_gtin', 20, 3 );
function display_variation_sku_and_gtin( $variation_data, $product, $variation ) {
$html = ''; // Initializing

// Inserting SKU
if( ! empty( $variation_data['sku'] ) ){
$html .= '</div><div class="woocommerce-variation-sku">' . __('SKU:') . ' ' . $variation_data['sku'];
}

// Inserting GTIN
if( get_post_meta( $variation->get_id(), 'barcode', true ) ){
$gtin = get_post_meta( $variation->get_id(), 'barcode', true );
$html .= '</div><div class="woocommerce-variation-gtin">' . __('GTIN:') . ' ' . $gtin;
}

// Using the variation description to add dynamically the SKU and the GTIN
$variation_data['variation_description'] .= $html;

return $variation_data;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.


Теперь ваш код ответа несколько устарел с Woocommerce 3 и содержит некоторые ошибки.

Кроме того, вы должны исключить переменные продукты из него, так как с моим кодом ответа вы теперь получаете SKU и GTIN для вариантов продукта переменных продуктов.

Вот пересмотренный код:

add_action('woocommerce_single_product_summary', 'display_product_sku_and_gtin', );
function display_product_sku_and_gtin() {
global $product;

echo '<p>' . __("SKU:") . ' ' . $product->get_sku() . '</p>';

if( get_post_meta( $product->get_id(), 'barcode', true) )
echo '<p>' . __("GTIN:") . ' ' . get_post_meta( $product->get_id(), 'barcode', true) . '</p>';
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]