Я добавил многоуровневый виджет навигации Woocommerce на боковую панель моего магазина. На главной странице отображаются категории, когда пользователь нажимает на какую-либо категорию, на странице отображаются подкатегории, а после выбора подкатегории пользователь видит товары.
Моя проблема в том, что многоуровневый виджет навигации работает только на странице, показывающей категории. Но я хочу, чтобы это работало на странице, которая показывает только продукты.
Если кто-то знает, в какой функции Woocommerce выбирает, какие продукты показывать на странице, это будет действительно полезно.
Спасибо.
UPD: Я обнаружил, что в widgets / class-wc-query.php в функции get_layered_nav_chosen_attributes () $ _GET работает неправильно. Когда я пытаюсь отфильтровать товары в подкатегориях или списках товаров, я вижу в $ _GET следующие значения:
[q] => / product-category / category-name / subcategory_name / filter_brand = brand_name
[query_type_brand] => или
Когда я фильтрую товары из списка категорий, я вижу, что filter_brand был правильно проанализирован и обработан как отдельный параметр GET.
Если кто-то знает, в чем проблема, пожалуйста, помогите мне.
UPD2: в это время у меня есть обходной путь. В функции class-wc-widge-layered-nav.php get_page_base_url () после вычисления $ link я добавил ложный аргумент типа ‘a = 1’. Теперь все необходимые аргументы проанализированы правильно. Поэтому в настоящее время я не знаю причину поведения. Я новичок в PHP и WordPress 🙂
Я решил проблему. Основной причиной была неправильная конфигурация nginx.
location {
try_files $uri $uri/ /index.php?q=$uri$args
}
Так что мой nginx добавил ненужные $ uri.
Правильное значение:
try_files $uri $uri/ /index.php?$args
Других решений пока нет …