Поскольку в примере ниже используется категория «clothing», убедитесь, что вы указываете slug категории товаров, который действительно существует в вашем магазине WooCommerce.
Обратите внимание, что это будет работать только если в настройках WooCommerce → Каталог товаров для параметра «Отображение страницы магазина» выбрано «Показывать товары».
Вам нужно добавить этот код в файл functions.php дочерней темы или использовать плагин для добавления пользовательских функций, например Code Snippets. Пожалуйста, не добавляйте код напрямую в файл functions.php родительской темы, так как он будет перезаписан при обновлении темы.
/**
* Исключение товаров из определённой категории на странице магазина
*/
function custom_pre_get_posts_query( $q ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'clothing' ), // Не показывать товары из категории clothing на странице магазина.
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
Добавление пользовательской вкладки
Используйте следующий фрагмент, чтобы добавить новую глобальную вкладку товара:
/**
* Добавление пользовательской вкладки товара
*/
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
// Добавляем новую вкладку
$tabs['test_tab'] = array(
'title' => __( 'Новая вкладка', 'woocommerce' ),
'priority' => 50,
'callback' => 'woo_new_product_tab_content'
);
return $tabs;
}
function woo_new_product_tab_content() {
// Содержимое новой вкладки
echo '<h2>Новая вкладка</h2>';
echo '<p>Это содержимое вашей новой вкладки.</p>';
}
Вкладка «Дополнительная информация»
Обратите внимание, что вкладка «Дополнительная информация» отображается только если у товара есть вес, размеры или атрибуты (с включённой опцией «Видимо на странице товара»). Если попытаться изменить эту вкладку, когда этих данных нет, может появиться ошибка:
Warning: call_user_func() ожидает корректный callback, но он не задан…
В этом случае используйте условные теги WooCommerce:
has_attributes()has_dimensions()has_weight()
/**
* Проверка наличия атрибутов, размеров или веса у товара,
* чтобы избежать ошибки при изменении вкладки "Дополнительная информация"
*/
add_filter( 'woocommerce_product_tabs', 'woo_rename_tabs', 98 );
function woo_rename_tabs( $tabs ) {
global $product;
if ( $product->has_attributes() || $product->has_dimensions() || $product->has_weight() ) {
// Переименовываем вкладку "Дополнительная информация"
$tabs['additional_information']['title'] = __( 'Данные о товаре' );
}
return $tabs;
}
