Как сделать тему полностью совместимой с WooCommerce

WooCommerce документы заявить, что для совместимости темы, эта функция должна быть вызвана woocommerce_content(); Но я видел много тем, которые не используют это, но все еще получают полную поддержку системы шаблонов WC.

Если быть точным, например, при поиске товара, мне нужно woocommerce, чтобы загрузить это templates\loop\result-count.php вместо того, чтобы просто применять фильтры и отображать тему search.php,

Чтобы увидеть, что я имею в виду, давайте попробуем поискать оба Про тему, и свободная тема; профессиональная тема полностью интегрирована с woocommerce и использует шаблоны из каталога плагинов woocommerce, тогда как бесплатная тема просто использует обычные search.php, То же самое относится к использованию темы Twenty Fourteen по умолчанию; оно использует search.php тоже для продуктов.

Я заглянул внутрь кода про тему и там нет woocommerce_content(); так что мне интересно как они это делают!

Я проверил документы WC, но они плохие и не очень хорошо объясняют, как полностью выполнить интеграцию. Любые идеи будут оценены, спасибо 🙂

0

Решение

После некоторых неортодоксальных способов отладки я наконец-то выяснил, почему 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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]