Ответы в темах

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • ничего не получается. попробую по другому поставить вопрос.

    На примере 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 редактировать? Или не суть?

    • Ответ изменён 7 лет, 12 месяцев назад пользователем 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() по идее сбросил. что не так?

Просмотр 6 ответов — с 1 по 6 (всего 6)