Nano Hash - криптовалюты, майнинг, программирование

Woocommerce: отображать родительскую категорию (любую) вместо текущей категории

Создавая настраиваемую тему, я должен изменить способ поведения WooCommerce при отображении категории продукта.

По умолчанию отображаются подкатегории и / или продукты для выбранной пользователем категории. Например, подкатегории и / или продукты для подкатегории_a при запросе https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/

Я хочу либо:

  • сохранить поведение по умолчанию, если у текущей категории нет родителя (например, https://wordpress_site/product-category/category_a)
  • изменить поведение по умолчанию, если текущая категория имеет родительскую (https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/), и вместо этого отображать продукты для родительской категории sub-category_a вместо продуктов для текущей категории sub-sub-category_a

На мой взгляд, мне нужно изменить $ wp_query при вызове шаблона archive-product.php, но я понятия не имею, как этого добиться правильно. Не могли бы вы мне помочь?

Чтобы ответить на вопрос «почему?», Цель состоит в том, чтобы добавить вверху страницы поле выбора с дочерними категориями и динамически фильтровать клиентскую часть списка продуктов, чтобы либо отображать продукты для выбранной категории, либо все продукты, если их нет, либо выбран вариант «все категории».


Ответы:


1

Таким образом, если у категории продуктов есть родительская категория, вы хотите получить все продукты для родительской категории.

Для этого вам нужно отредактировать запрос в следующих строках:

function prefix_get_parent_category_products( $query ){

    // check we're in the right place and the category has a parent
    if( $query->is_tax('product_cat') && !empty($query->query_vars['post_parent']) ){

        // edit the tax query to include the parent category
        $query->set('tax_query', array(
            'taxonomy' => 'product_cat',
            'field' => 'term_id',
            'terms' => $query->query_vars['post_parent'],
            'include_children' => true
        )
    }
    return;
}

add_action( 'pre_get_posts', 'prefix_get_parent_category_products' );

Обратите внимание: я не тестировал эту функцию, поэтому вам, возможно, придется адаптироваться к вашим потребностям.

Надеюсь, это поможет!

03.01.2019
  • Нет. Я хочу отображать родительскую категорию (и все ее продукты и продукты для ее подкатегории) вместо запрашиваемой категории, если запрашиваемая категория имеет родительскую категорию. 04.01.2019
  • @MaxAuray Извинения - я явно неправильно понял. Однако, используя тот же подход, должно быть возможно достичь того, что вам нужно. Я отредактирую свой ответ, когда у меня будет минутка ... 04.01.2019
  • @MaxAuray Я обновил свой ответ - надеюсь, на этот раз он более полезен! Ключевым моментом является то, что вам нужно изменить запрос, используя pre_get_posts, а затем изменить налоговый запрос, чтобы использовать term_id родительской категории. 04.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование