Squeak.ru - шаблоны программирования

Простое правило перезаписи Wordpress не работает

Я пытаюсь создать правило перезаписи в Wordpress, чтобы создавать прямые красивые ссылки на результаты поиска.

Я работаю с настраиваемым типом сообщения под названием "объект"

Моя страница результатов находится по этому URL-адресу: http://www.domain.com/objects/

Я хочу создать такой URL-адрес, чтобы указать список новых объектов: http://www.domain.com/objects/new

Переписанный запрос должен быть: http://www.domain.com/objects/?filter=new

После этого я смогу использовать значение $ _GET ['filter'] для запроса моих объектов (meta_query) ...

моя проблема

Я пытаюсь сделать это с помощью этого кода:

add_rewrite_tag('%filter%','([^&]+)');
add_rewrite_rule('objects/new/','objects/?filter=new','top');

Тогда .htaccess выглядит так:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^objects/new/ /objects/?filter=new [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

К сожалению, когда я пытаюсь перейти по URL-адресу http://www.domain.com/objects/new У меня ошибка 404 :(

Панель отладки покажет мне это:

Request:
   objects/new

Query String:
   attachment=new

Matched Rewrite Rule:
   [^/]+/([^/]+)/?$

Matched Rewrite Query:
   attachment=new

Может кто-нибудь сказать мне, почему Wordpress пытается получить вложение? Что-то не так в моем правиле перезаписи или я что-то упускаю?

Заранее спасибо за помощь!

07.10.2013

  • Несколько вопросов 1. Правильно ли это работает - domain.com/objects 2. domain.com/objects/filter/new - подойдет ли вам? 17.10.2013
  • Привет, Прамод, я не понимаю, что вы имеете в виду, задавая эти вопросы? domain.com/objects - это существующая страница WP, и domain.com/objects/filter/new не является для меня хорошим решением, поскольку мне не нужен фильтр в конечном URL-адресе (я хочу domain.com/objects/new ) 17.10.2013

Ответы:


1

Хорошо, я наконец нашел способ добиться этого.

Вот код, который я добавил в свою тему:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'objects/(.+)'  =>  'index.php?page_id=27&filtre=' . $wp_rewrite->preg_index(1),
    );
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}

где 27 - это идентификатор Wordpress страницы "/ objects", на которую я хочу перейти с переписанным URL-адресом, и:

function custom_wp_querystring() {
    add_rewrite_tag('%filtre%','([^&]+)');
}

Чтобы сообщить Wordpress, мне нужно использовать настраиваемую переменную запроса под названием «filter».

Эта последняя функция должна быть добавлена ​​в действие инициализации:

add_action( 'init', 'custom_wp_querystring');
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );

Важно знать, что в моем шаблоне страницы (с идентификатором 27 в моем примере), если я хочу протестировать переменную запроса, это невозможно сделать:

if ( isset ( $_GET['filtre'] ) ) { ... }

Переменные GET "скрыты" из-за перенаправления Wordpress, вам необходимо сделать следующее:

if ( isset( $wp_query->query_vars['filtre'] ) ) { ... }
18.10.2013
  • Вы добавляете правило путем кодирования, в то время как плагин добавляет код непосредственно в базу данных .. :) 18.10.2013
  • Спасибо, безуспешно использовал правило с index.php?pagename=some-page-name, с index.php?page_id=123 все в порядке. 01.04.2014

  • 2

    Используйте этот плагин Rewrite plugin, он поможет вам проанализировать, какое правило работает, когда вы нажмете url..вы можете создать новое правило перезаписи и проверить здесь, работают ли они соответствующим образом или нет.

    Нет необходимости что-либо писать в wordpress, потому что в самом wordpress есть класс wp_rewrite, который управляет всеми правилами перезаписи.

    Попробуйте использовать несколько правил перезаписи и соответственно установите приоритет правила. потому что правило, упомянутое или перечисленное выше в списке, будет соответствовать первым, если совпадение будет найдено выше, тогда wordpress проигнорирует перечисленные ниже правила.

    Я использовал этот плагин и его работу так, как хочу. Прикрепляем скриншот сюда

    введите описание изображения здесь

    18.10.2013
  • Привет спасибо! Этот плагин кажется хорошим, но я так и не нашел, как удалить добавленные правила :( Я использую панель отладки, чтобы видеть запросы анализа. К сожалению, моя проблема не в этом, я знаю, как добавлять правила перезаписи, я просто не знаю правильный способ построения правил для достижения того, чего я хочу: S 18.10.2013

  • 3

    Правило перезаписи должно быть размещено как

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^objects/new(.*)$ /objects/?filter=new [L]
    
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    

    17.10.2013
  • Привет, даже с этим правилом выше обычных правил Wordpress, Wordpress запрашивает "вложение" 17.10.2013
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...