gavin
  • 0
Новичок

Перезапись пользовательских URL для шаблонов

  • 0

Мне нужно переписать некоторые URL-адреса в пользовательские шаблоны. Например, у меня есть страница domain.com/page, и когда пользователь нажимает «удалить» на элементе, он переходит на domain.com/page/?remove=54. Я бы хотел, чтобы он был переписан на domain.com/page/remove/54.

Помощь приветствуется, заранее спасибо!

Share
  1. Привет @Gavin : Не могли бы вы уточнить свой вопрос? Где это «удалить», на которое нажимает пользователь? Какой код создает ссылку? Ваш код создает эту ссылку? Что вы удаляете? (Я знаю, что это не «важно» для вопроса, но это помогает мне понять, что вы пытаетесь сделать.) ИЛИ вы говорите, что хотите иметь URL-адреса формата, /page/remove/54 и вы хотите, чтобы 54 были доступны в вашей теме, используя $_GET['remove'] на страница нормально загружается по /page/ URL?

    • 0
    • Есть несколько функций, которые будут использовать переменные URL — например, одна из них удаляет событие, созданное пользовательским плагином. Пользователь нажимает «x», и ссылка переходит ?remove=346, например, на. Вы правы, мне нужно, чтобы URL-адрес выглядел чистым ( remove/346 ), но $_GET['remove'] был доступен в шаблоне страницы. Это помогает? Спасибо за ответ!

      • 0
    • Я думаю, у Гевина нет проблем с изменением ссылок, но «отловом» нового запроса. Если у вас есть страница WordPress по адресу /pagetitle, запрос /pagetitle/remove/54 не даст вам ее без изменения структуры перезаписи.

      • 0
    • Ну, я не могу прочитать, что именно в его вопросе. Но если это так, он может зарегистрировать «удалить» как конечную точку перезаписи: codex.wordpress.org/Rewrite_API

      • 0
  2. Поскольку вы хотите добавить что-то в конец каждого правила перезаписи поста/страницы, вы, вероятно, можете просто добавить конечную точку перезаписи. Это регулярные выражения вида /[endpoint_name](/[optional_extra_stuff])?, которые добавляются к уже сгенерированным правилам для страниц, постов, архивов,…

    Вы определяете, на какие структуры вы хотите их добавить, устанавливая маску конечной точки. Это битовая маска, поэтому вы можете комбинировать разные группы с помощью | оператора, например: EP_PERMALINK | EP_PAGES будет соответствовать каждой странице и каждой постоянной ссылке (полные посты и архивы на основе даты). Список конечных точек по умолчанию можно найти в верхней части wp-includes/rewrite.php .

    Следующий код добавит /remove(/(.*))? существующие правила перезаписи для страниц, постов и архивов на основе даты (по какой-то причине они генерируются дважды, один раз в EP_PERMALINK и один раз в EP_DATE ). remove также будет доступен как общедоступная переменная запроса, поэтому вы можете $wp_query->get( 'remove' ) получить значение (если установлено) [optional_extra_stuff] в URL-адресе.

    add_filter( 'init', 'wpse2614_init' );
    function wpse2614_init()
    {
        add_rewrite_endpoint( 'remove', EP_PERMALINK | EP_PAGES );
    }
    
    • 0
  3. Это совершенно просто. В вашем PHP-скрипте вместо этого вы выводите ?remove=54 только вывод. remove/54 Это должно помочь изменить ссылки, как вы просили.

    • 0

Оставить ответ

You must login to add an answer.