WooCommerce документы заявить, что для совместимости темы, эта функция должна быть вызвана woocommerce_content();
Но я видел много тем, которые не используют это, но все еще получают полную поддержку системы шаблонов WC.
Если быть точным, например, при поиске товара, мне нужно woocommerce, чтобы загрузить это templates\loop\result-count.php
вместо того, чтобы просто применять фильтры и отображать тему search.php
,
Чтобы увидеть, что я имею в виду, давайте попробуем поискать оба Про тему, и свободная тема; профессиональная тема полностью интегрирована с woocommerce и использует шаблоны из каталога плагинов woocommerce, тогда как бесплатная тема просто использует обычные search.php
, То же самое относится к использованию темы Twenty Fourteen по умолчанию; оно использует search.php
тоже для продуктов.
Я заглянул внутрь кода про тему и там нет woocommerce_content();
так что мне интересно как они это делают!
Я проверил документы WC, но они плохие и не очень хорошо объясняют, как полностью выполнить интеграцию. Любые идеи будут оценены, спасибо 🙂
После некоторых неортодоксальных способов отладки я наконец-то выяснил, почему Woocommerce не загружается в приведенном выше примере (при поиске), тема pro отбирает категории из поискового запроса!
add_filter( 'pre_get_posts', 'woo_exclude_categories_homepage' );
Это делает проверку woocommerce при проверке woocommerce_products_will_display()
что идет дальше и звонит is_product_taxonomy()
это также идет глубже и призывает is_tax( get_object_taxonomies( 'product' ) )
!
В документации ничего не говорится о вышеперечисленном, и без глубокого знания WordPress это не так просто понять на первой странице!
Надеюсь, что это помогает / экономит время кому-то еще ..
Обновить
Достаточно странно; Оказывается, выполнение $query->parse_query();
на вызов функции pre_get_posts
решает задачу поиска!
add_filter('pre_get_posts', 'wpf_exclude_categories_homepage');
function wpf_exclude_categories_homepage($query) {
$query->parse_query();
return $query;
}
Других решений пока нет …