Исключение товаров из определённой категории на странице магазина

Поскольку в примере ниже используется категория «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;
}

Поделиться с друзьями
Документация WooCommerce