2016-08-22 3 views
2

У меня есть 2 категории продуктов "current-probes" и "accessories", которые имеют некоторые подкатегории "flex-ct", "tlar" и "test-lead".подкатегорий Показать продукт (не родительские категории) и продукты на странице магазина

Я хотел бы показать на странице магазина, моих подкатегорий и моих продуктов. Я знаю, что WooCommerce имеет параметр отображения родительских категорий и продуктов, но не подкатегорий.

Мне также необходимо предотвратить отображение отдельных продуктов подкатегорий.

Вот код, который я пытался (находится в моем файле functions.php):

add_action('pre_get_posts', 'custom_pre_get_posts_query'); 
function custom_pre_get_posts_query($q) { 
if (! is_admin() && is_shop() || is_product_category(array('current-probes', 'accessories')) ) { 
    $q->set('tax_query', array(array(
     'taxonomy' => 'product_cat', 
     'field' => 'slug', 
     'terms' => array('flex-ct', 'tlar', 'test-lead'), 
     'operator' => 'NOT IN' 
    ))); 
} 

remove_action('pre_get_posts', 'custom_pre_get_posts_query'); 
} 

Это предотвращает отдельные продукты подкатегорий от показа, но мне нужно фактическая подкатегория, чтобы показать в петле.

У WooCommerce есть параметр, который отображает только категории и продукты, в основном я бы хотел, чтобы только он отображал подкатегории (а не родительские категории) и продукты. Я надеюсь, что в этом есть смысл.

Я пытался понять это в течение недели, и я схожу с ума. Я чувствую, что есть простое решение, которое я просто забыл.

Что я делаю неправильно? Как я могу это достичь?

Благодаря

+0

Я проверяю это, и я вижу, как я могу выполнять множественную обработку таксономии. Я все еще не уверен, как получить подкатегорию, но не основную категорию, а не отдельные записи для них. Можете ли вы указать мне в правильном направлении? Я искренне ценю вашу помощь. – TheKateDev

+0

В этом фрагменте произошла ошибка синтаксиса, которую я исправил, но это не то, что я ищу. Спасибо за вашу помощь. – TheKateDev

ответ

0

Я нашел то, что я ищу, почти. На самом деле он не использует pre_get_posts. Вот код:

add_filter('woocommerce_product_subcategories_args', 'filter_woocommerce_product_subcategories_args', 10, 1); 
function filter_woocommerce_product_subcategories_args($array) { 
if (! is_admin() && is_shop()) { 
    $category = get_term_by('name', 'Products', 'product_cat'); 
    $parent_id = ($category) ? $category->term_id : 10; 
    $array['parent'] = $parent_id; 

     return $array; 
}; 
} 

Этот выход будет подкатегорий категории 10. Моя единственная проблема в том, что мне нужно, чтобы выбрать более одной родительской категории. Я не знаком с использованием этого синтаксиса с двоеточиями, поэтому я не уверен, как указать более одной родительской категории. Также это предотвращает отображение подкатегории на странице категории его родителей, и я тоже не хочу, чтобы это произошло. Если у кого-то будет какая-то обратная связь, это будет очень признательно.

Смежные вопросы