kapitoxapux
Ответы в темах
-
ничего не получается. попробую по другому поставить вопрос.
На примере WooCommerce
function dco_add_rewrite_rules() {
add_rewrite_rule(‘product_cat/(.+?)/filter_vendor(/(.*))?/?$’, ‘index.php?product_cat=$matches[1]&filter_vendor=$matches[3]’, ‘top’);
}
add_action(‘init’, ‘dco_add_rewrite_rules’);это правило будет работать для пути вида
http://localhost:8080/some-site/wp-admin/edit-tags.php?taxonomy=pa_vendor
где вместоedit-tags.php
у нас будет нечто вроде/some-tag/some-tag/
??Просто все варианты регулярных выражений что я пробовал не дают нужный результат. Максимум что у меня получалось это пустой блок внутри контент части (то место где выводятся результаты работы фильтра). Возможно правила были верны, но был конфликт с WooComm?
спасибо за пример, попробую его применить, но на первый взгляд вроде всё тоже самое… касательно того, как оно должно работать, Вы правы, адрес генерится после выбора определённого значения и собственно хочется чтобы происходила подмена одного урла на другой.
Юрий, спасибо за подробное описание механики. Учту.
Сергей, изменил. Не помогло.
По порядку. Я открыл файл functions.php по следующему пути:wp-include/themes/some theme/functions.php
и на самом верху вписал вышеозначенный код с исправленным номером элемента массива. Принципиально ли местонахождения этого файла? Просто он встречается в нескольких местах и я подумал, может я не туда делаю запись?
Как я себе это представляю, фильтр, работу которого я пытаюсь скорректировать, относится к виджету «WooCommerce Навигационные фильтры». Классclass-wc-widget-layered-nav.php
вроде описывающий этот виджет, лежит по следующему путиwp-content\themes\some theme\woocommerce\includes\widgets
. Может там же нужно и functions.php редактировать? Или не суть?- Ответ изменён 6 лет, 9 месяцев назад пользователем kapitoxapux. Причина: уточнение
Юрий, означает ли это, что когда я применил add_rewrite_rule, необходимо теперь продублировать это правило и для Apacha, чтобы он правильно прочитал это ЧПУ?
WP может его прочитать или перезаписать, но инструкция там не для него
спасибо, буду иметь в виду этот момент, но всё же, не то чтобы я спорил, разве конструкция вида
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /testWP/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /testWP/index.php [L] </IfModule> # END WordPress
не содержит инструкций для WP?
как бы там ни было, более важно решить основную задачу. первый ответ был прекрасен, но я видимо не туда или не совсем так его применил. хотелось бы знать, где нутупил.Спасибо большое за этот пример. Толчок в новое русло. Вопрос лирический но всё же, почему не работает в htaccess? WP что игнорирует этот файл?
ммм и вот ещё
&filter_vendor=$matches[3]'
почему в этом месте стоит 3 а не 2? очипятка или так должно быть?вообщем добавил в functions.php такой код
function dco_add_rewrite_rules() { add_rewrite_rule('cat/(.+?)/filter_vendor(/(.*))?/?$', 'index.php?cat=$matches[1]&filter_vendor=$matches[2]', 'top'); } add_action('init', 'dco_add_rewrite_rules'); function dco_add_query_vars($vars) { $vars[] = 'filter_vendor'; return $vars; } add_filter('query_vars', 'dco_add_query_vars');
не работает. где ошибка? в настройки постоянных ссылок зашёл, сохранил.
flush_rewrite_rules()
по идее сбросил. что не так?