Intereting Posts
Разница и использование uri (например, get_directory_uri) и абсолютный путь (например, get_directory) Как создать несколько языковых маршрутов с правилами перезаписи или переписывать конечные точки? Создать нового пользователя WordPress после Twitter Signin, используя учетные данные Twitter? Тематическая тема Пользовательский цикл Как сделать изображение полной шириной внутри абзаца, который составляет 70% (текст) Каков предпочтительный способ добавления пользовательских файлов javascript на сайт? Можно ли исправить URL-адрес администратора за прокси-сервером без взлома ядра? Функции для вызова определенных элементов плагины не работают Правильный размер прикрепления Как реализовать post / redirect / get pattern в форме контакта Дайте администратору сайта возможность «пропустить подтверждение по электронной почте» при добавлении нового пользователя Как разделить сеанс WordPress и файлы cookie между доменом и субдоменом? Остановите плагин в процессе активации, когда некоторая версия WP не будет выполнена, а затем сообщите об ошибке в admin_notices action hook Галерея WordPress, захват ссылки и изображений?

Пользовательский WordPress переписать

Я пытаюсь пользовательский переписать для следующего URL …

http://www.domain.com/lp/1 

и он будет анализироваться с использованием

 lp.php?p=1 

Я пробовал следовать …

 add_action( 'init', 'aagt_rewrite_add_rewrites' ); function aagt_rewrite_add_rewrites() { add_rewrite_rule( '^lp/(\d+)/?$', // p followed by a slash, a series of one or more digits and maybe another slash 'lp.php?p=$matches[1]', 'top' ); } 

но если я попробую URL ( http://www.domain.com/lp/1 ) после кода выше, он не сработает. Я что-то пропустил, я попытался сбросить правила htaccess. пожалуйста, помогите, спасибо.

Solutions Collecting From Web of "Пользовательский WordPress переписать"

WordPress имеет два типа правил перезаписи – внутренние и внешние. Внутренние правила анализируются WordPress и перенаправляются на index.php . Внешние перезаписывания записываются в .htaccess и не направлены на WordPress.

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

Если вы хотите использовать среду WordPress в коде, который получает это правило перезаписи, он должен быть внутренним переписыванием. Если вы хотите, чтобы это внешнее правило, которое не обрабатывается WordPress, вам нужно изменить свое правило, чтобы использовать $1 вместо $matches[1] .

РЕДАКТИРОВАТЬ

вот несколько методов, первый – быстрый и грязный метод –

Первый способ

Шаг 1 для обоих методов заключается в добавлении запроса var lpid в массив WordPress распознаваемых запросов:

 function wpa55759_query_vars( $query_vars ){ $query_vars[] = 'lpid'; return $query_vars; } add_filter( 'query_vars', 'wpa55759_query_vars' ); 

Шаг 2, добавьте правило перезаписи, чтобы установить только lpid при lpid нашего правила:

 function wpa55759_rewrites(){ add_rewrite_rule( 'lp/(\d+)/?$', 'index.php?lpid=$matches[1]', 'top' ); } add_action( 'init', 'wpa55759_rewrites' ); 

Шаг 3, parse_request и проверьте, установлен ли наш запрос var. Если да, загрузите lp.php из каталога шаблона и выйдите из него:

 function wpa55759_parse_request( $request ){ if( isset( $request->query_vars['lpid'] ) ): include( get_template_directory() . "/lp.php" ); exit(); endif; return $request; } add_action( 'parse_request', 'wpa55759_parse_request' ); 

Чтобы получить значение lpid внутри lp.php :

 global $wp; echo $wp->query_vars['lpid']; 

В основном мы проверяем наш запрос var и вырезаем раньше. WordPress никогда не запускает запрос базы данных для загрузки сообщений или страниц. Не знаете, какие побочные эффекты могут иметь место в противном случае.

Метод второй

Второй способ – создать страницу в WordPress, lp и указать наше правило на этом, также передавая запрос var:

 function wpa55759_rewrites(){ add_rewrite_rule( 'lp/(\d+)/?$', 'index.php?pagename=lp&lpid=$matches[1]', 'top' ); } add_action( 'init', 'wpa55759_rewrites' ); 

Теперь вы можете создать шаблонную page-lp.php и получить доступ к lpid с помощью:

 echo get_query_var( 'lpid' ); 

Еще один вариант этого второго метода заключается в фильтрации template_redirect и ярлыке иерархии шаблонов, загрузка собственного файла:

 function wpa55759_template_redirect(){ global $wp_query; if( $wp_query->get( 'lpid' ) ): include( get_template_directory() . "/lp.php" ); exit(); endif; } add_filter( 'template_redirect', 'wpa55759_template_redirect' ); 

перейдите в wp-admin / options-permalink.php

ничего не делать, кроме "Сохранить изменения"