Вопрос или проблема
Я заметил в своей настройке WordPress/WooCommerce, что каждый раз, когда я добавляю тег к продукту или блогу, этот тег добавляется как класс в перечисленный элемент (продукт/блог).
Я также заметил, что для каждой категории, в которую я помещаю эти элементы поста, добавляется класс в том же месте.
Как я могу предотвратить добавление названий тегов и категорий в мой HTML-разметку как классов в WordPress и WooCommerce? Мне это не нужно, и это создает беспорядок.
Спасибо за помощь! Я не смог найти аналогичную функцию нигде.
Вам необходимо использовать фильтр WooCommerce wc_product_post_class
. Следующий код должен помочь.
function my_strip_tag_class( $classes ) {
global $post;
$product_tags = get_the_terms( $post->ID, 'product_tag' );
if( $product_tags ) foreach ( $product_tags as $tag ) {
$tag_index = array_search($tag, $classes);
if($tag_index !== false){
unset($classes[$tag_index]);
}
}
return $classes;
}
add_filter( 'wc_product_post_class', 'my_strip_tag_class' );
Для WooCommerce 3.6.2+ попробуйте фильтр woocommerce_post_class
:
add_filter('woocommerce_post_class', function($classes, $product) {
// уберите любые классы, которые вы хотите здесь...
return $classes;
}, 10, 2);
Ответ или решение
Удаление классов тегов и категорий из разметки WooCommerce
Если вы используете WooCommerce в своем WordPress-установке, то могли заметить, что добавление тегов и категорий к продуктам и записям создает неразбериху в HTML-разметке. Каждый раз при публикации поста или продукта новые теги и категории добавляются как классы, что может привести к перегруженности разметки и усложнению поддержки веб-сайта.
К счастью, существует простой способ предотвратить добавление этих классов в разметку, используя хуки (фильтры) в WooCommerce. Ниже представлены шаги и примеры кода, которые помогут вам эффективно избавиться от нежелательных классов.
Шаг 1: Удаление классов тегов из продуктов
Чтобы убрать классы тегов из продуктов, можно воспользоваться фильтром wc_product_post_class
. Пример кода выглядит следующим образом:
function my_strip_tag_class( $classes ) {
global $post;
// Получаем все теги товара
$product_tags = get_the_terms( $post->ID, 'product_tag' );
// Если теги найдены, удаляем их классы
if( $product_tags ) {
foreach ( $product_tags as $tag ) {
$tag_index = array_search($tag->slug, $classes);
if($tag_index !== false) {
unset($classes[$tag_index]);
}
}
}
return $classes;
}
add_filter( 'wc_product_post_class', 'my_strip_tag_class' );
В этом примере функция my_strip_tag_class
получает все теги для текущего поста и ищет их среди классов. Если класс найден, он удаляется с помощью unset()
.
Шаг 2: Удаление классов тегов из записей блога
Для того чтобы очистить классы тегов и категорий из разметки записей блога, рекомендуется использовать фильтр woocommerce_post_class
. Код может выглядеть следующим образом:
add_filter('woocommerce_post_class', function($classes, $product) {
// Здесь можно удалить классы или модифицировать массив $classes
return $classes;
}, 10, 2);
В этом случае вы можете добавить логику для удаления любых нежелательных классов или просто оставить массив $classes
без изменений.
Заключение
Удаление классов тегов и категорий из разметки WooCommerce поможет сделать ваш код более чистым и упростить поддержку. Убедитесь, что вы добавляете данный код в файл functions.php
вашей темы или используете специальный плагин для кастомных функций, чтобы сохранить изменения при обновлениях темы.
Постоянно проверяйте обновления и изменения в документации WooCommerce, так как в новых версиях могут появляться новые хуки или изменяться существующие. Если у вас есть дополнительные вопросы или вам нужна помощь в реализации, не стесняйтесь обращаться к сообществу WordPress.
Ваш сайт станет более структурированным и легче воспринимаемым для поисковых систем, что в свою очередь положительно скажется на вашем SEO.