Как добавить HTML-элементы к определённым атрибутам на странице карточки товара в WooCommerce?

Как можно добавить всплывающие подсказки к некоторым атрибутам в карточке товара, используя тег <code class="html">&lt;span&gt;</code>? Я рассматриваю вариант реализовать это с помощью JavaScript, например, добавляя нужный тег <code class="html">&lt;span&gt;</code> при наличии определенного атрибута, как "вес". Есть ли более эффективные подходы или решения?
  • 23 сентября 2024 г. 15:43
Ответы на вопрос 2
Добавление HTML-элементов, таких как всплывающие подсказки, к атрибутам на странице карточки товара WooCommerce можно сделать несколькими способами. Если вы хотите использовать JavaScript, это действительно один из вариантов, но существует и более "чистый" и стабильный подход, используя хуки WooCommerce.

### Подход с использованием хуков WooCommerce

WooCommerce предоставляет различные хуки, которые позволяют изменять вывод атрибутов товара. Вы можете использовать хук `woocommerce_product_attributes` для добавления HTML-кода прямо в описание атрибутов.

Пример кода для добавления всплывающих подсказок:

```php
add_filter('woocommerce_product_get_attributes', 'add_tooltip_to_product_attributes', 10, 2);

function add_tooltip_to_product_attributes($attributes, $product) {
    foreach ($attributes as $key => $attribute) {
        // Проверяем, является ли атрибут "weight" (весом)
        if ($attribute['name'] === 'Weight') {
            $attributes[$key]['value'] .= ' <span class="tooltip" title="Это вес товара">ℹ️</span>';
        }
        // Вы можете добавить дополнительные условия для других атрибутов
    }
    return $attributes;
}
```

Этот код добавляет иконку информации с подсказкой (в виде текста в атрибуте `title`) к атрибуту "Weight". Вы можете дополнительно стилизовать `.tooltip` с помощью CSS для лучшего вида.

### Подход с использованием JavaScript

Если вы предпочитаете использовать JavaScript, вы можете сделать это напрямую, добавляя HTML после загрузки страницы. Например:

```html
<script>
document.addEventListener('DOMContentLoaded', function() {
    const weightAttribute = document.querySelector('.woocommerce-product-attributes-item--weight');
    if (weightAttribute) {
        const tooltip = document.createElement('span');
        tooltip.className = 'tooltip';
        tooltip.title = 'Это вес товара';
        tooltip.innerHTML = ' ℹ️'; // или любой другой HTML-код

        weightAttribute.appendChild(tooltip);
    }
});
</script>
```

Этот скрипт проверяет наличие атрибута веса и добавляет к нему всплывающую подсказку.

### Заключение

Хотя использование JavaScript допустимо, лучший подход заключается в использовании хуков WooCommerce для добавления HTML к атрибутам. Это позволяет сохранить совместимость с другими плагинами и темами, а также упрощает поддержку в будущем.
Можно скопировать шаблон wc-template-functions.php  в свою тему (дочернюю) и там изменить. 
Но возможно будет лучше изменить хуком woocommerce_display_product_attributes (сперва нужно удалить родной вывод, потом вставлять свой)
Похожие вопросы