Чтобы исправить отображение описания только выбранной вариации на карточке товара, вам придется использовать немного другой подход, так как описание выбранной вариации должно обновляться динамически в зависимости от выбора пользователя.
Проблема в том, что `$product->get_variation_id()` не возвращает ID выбранной вариации до тех пор, пока не будет совершено действие, например, добавление товара в корзину. При просмотре страницы товара нет "выбранной" вариации, вместо этого есть возможность выбора вариаций пользователями.
Вам необходимо использовать JavaScript (или jQuery) для отслеживания изменений выбранных вариантов в вариативном продукте и AJAX для получения и отображения описания для выбранной вариации.
Сначала зарегистрируйте и добавьте на страницу скрипт для обработки событий изменения вариации:
```php
function theme_enqueue_assets() {
wp_enqueue_script('my_custom_script', get_template_directory_uri() . '/js/custom_script.js', array('jquery'), '1.0.0', true);
wp_localize_script('my_custom_script', 'ajax_var', array(
'ajax_url' => admin_url('admin-ajax.php')
));
}
add_action('wp_enqueue_scripts', 'theme_enqueue_assets');
function load_variation_description() {
$variation_id = isset($_POST['variation_id']) ? intval($_POST['variation_id']) : 0;
if ($variation_id) {
$variation = new WC_Product_Variation($variation_id);
$variation_description = $variation->get_description();
echo wp_kses_post($variation_description);
}
wp_die();
}
add_action('wp_ajax_load_variation_description', 'load_variation_description');
add_action('wp_ajax_nopriv_load_variation_description', 'load_variation_description');
```
Создайте JavaScript файл с именем `custom_script.js` в вашей теме (или дочерней теме) в каталоге js и добавьте в него такой код:
```javascript
jQuery(document).ready(function($) {
$('.variations_form').on('found_variation', function(event, variation) {
if (variation.variation_id) {
$.ajax({
url: ajax_var.ajax_url,
type: 'POST',
data: {
action: 'load_variation_description',
variation_id: variation.variation_id
},
success: function(result) {
$('#variation-description').html(result);
}
});
}
}).on('reset_data', function() {
$('#variation-description').html('');
});
});
```
Не забудьте, что вам нужно создать элемент с ID `#variation-description` на вашей странице, где должно отображаться описание вариации:
```html
<div id="variation-description"></div>
```
Добавьте этот элемент в шаблон карточки товара, используя соответствующее место для хуков или переопределяя шаблон в теме.
Теперь, когда пользователь выбирает вариацию, описание для этой вариации будет загружено и отображено в элементе `#variation-description`. Сценарий обрабатывает события выбора вариации и очищает описание, если выбор сбрасывается.