Исключить категории товаров из виджета Woocommerce - PullRequest
0 голосов
/ 09 июля 2019

Мы хотим скрыть / исключить несколько определенных категорий woocommerce из магазина woocommerce, а также всех страниц.

До сих пор нам удавалось добиться этого с помощью кода, который я нашел в Интернете.Код ниже скрывает правильную категорию со страницы магазина, но когда мы выполняем поиск с помощью поиска woocommerve, категория не скрывается на странице результатов.

    //Insert excluded category ids here
    $excludes = array(3380,3308);
    $includes = explode(",",$widget_args['include']);

    $includes = array_filter($includes, function($value) use ($excludes) {
      return !in_array($value, $excludes);
    });
    $widget_args["include"] = implode(",", $includes);
    return $widget_args;
}

add_filter( 'woocommerce_product_categories_widget_dropdown_args', 'exclude_woocommerce_widget_product_categories');
add_filter( 'woocommerce_product_categories_widget_args', 'exclude_woocommerce_widget_product_categories');

Код ниже скрывает категорию отстраница поиска, но не со страницы магазина

add_filter( 'woocommerce_product_categories_widget_dropdown_args', 'organicweb_exclude_widget_category');
add_filter( 'woocommerce_product_categories_widget_args', 'organicweb_exclude_widget_category' );
function organicweb_exclude_widget_category( $args ) {
        $args['exclude'] = array('15', '3380', '3308' );    // Enter the id of the category you want to exclude in place of '30'
        return $args;
}

Может ли кто-нибудь помочь мне объединить 2 куска кода вместе?

Заранее спасибо.

1 Ответ

0 голосов
/ 10 июля 2019

Оба фрагмента кода, которые вы разместили, скрывают только категории от виджета, в противном случае это не влияет на скрытие категории.Не 100% цели, мне кажется, две вещи:

Если вы хотите Исключить товары из определенной категории на странице магазина сделать это с кодом ниже (нескрыть категорию, если вы выбрали ее отображение в разделе «Дизайн»> «Настройка»> «WooCommerce»> «Каталог продуктов в бэкэнде», как показано в документах WooCommerce.

/**
 * Exclude products from a particular category on the shop page
 */
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' ), // Don't display products in the clothing category on the shop page.
           'operator' => 'NOT IN'
    );


    $q->set( 'tax_query', $tax_query );

}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' ); 

Чтобы на самом деле скрыть саму категорию, выполните следующие действия:задокументировано здесь Скрыть категорию WooCommerce со страницы магазина , которая не скрывает продукты этой категории.

/**
 * Show products only of selected category.
 */
function get_subcategory_terms( $terms, $taxonomies, $args ) {

    $new_terms  = array();
    $hide_category  = array( 126 ); // Ids of the category you don't want to display on the shop page

      // if a product category and on the shop page
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
        if ( ! in_array( $term->term_id, $hide_category ) ) { 
            $new_terms[] = $term;
        }
        }
        $terms = $new_terms;
    }
  return $terms;
}
add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...