Домашняя » WordPress » Переписывание URL в советах и ​​плагинах WordPress

    Переписывание URL в советах и ​​плагинах WordPress

    Новейшие обновления WordPress позволили разработчикам очень быстро настроить свой личный веб-сайт. Это просто, чтобы обновить области вашей темы, заменить виджеты на боковой панели, и даже написать свои собственные функции кода PHP. Пространство огромно - и одна область популярности переписывает симпатичные постоянные ссылки URL.

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

    Понимание WP_Rewrite

    Если вы вообще знакомы с mod_rewrite на серверах Apache, вы поймете синтаксис переписывания WordPress. Их система все еще построена на вершине .Htaccess файл, но все правила закодированы в PHP. Это на самом деле делает процесс немного проще, так как мы имеем больше контроля над написанием наших собственных URL.

    Я рекомендую просмотреть страницу класса $ wp_rewrite, так как она содержит массу информации по этому вопросу. Есть даже небольшие примеры, на которые мы можем ссылаться, чтобы все было легче понять. Большая часть кода может быть написана непосредственно в вашей теме functions.php файл. Давайте начнем с рассмотрения переписок по умолчанию, уже включенных в WordPress..

    Содержимое $ wp_rewrite-> rules

    Объявив $ wp_rewrite Класс как глобальный у нас есть доступ ко всем внутренним данным. Когда вы идете, чтобы добавить свои собственные правила, они добавляются в массив с именем $ Wp_rewrite-> Правила. Важно запомнить эту переменную, так как вам, вероятно, придется ссылаться на данные много раз во время разработки.

    правила); ?>

    Я добавил этот блок кода в мою тему page.php файл. Он выведет большой массив данных, который выглядит как большой беспорядок. Но если ты Просмотреть исходный код на вашей странице на самом деле легко увидеть, какие правила перезаписи соответствуют какому имени файла. Например, давайте посмотрим на правила для переписывания категории:

    [category /(.+?)/?$] => index.php? category_name = $ соответствует [1] 

    Бит слева в скобках - это наш Apache RewriteRule, который нужно искать. Начиная с раздела / Категория / сопровождаемый любой строкой символов. Если это соответствует, то сервер знает ссылку index.php? category_name = при замене переменной на конце.

    Установка пользовательских постоянных ссылок

    В одном только классе $ wp_rewrite можно найти так много контента. Можно ссылаться на многие другие свойства, такие как $ Wp_rewrite-> category_base или же $ Wp_rewrite-> author_base для получения структуры URL по умолчанию для этих страниц. Но помимо изменения настроек WP по умолчанию мы также можем создавать свои собственные правила.

    Восстановление Авторской Базы

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

    Но мы можем использовать add_rewrite_rule () из кодекса WordPress для интеграции некоторых новых настроек. В этом случае я заменил / Автор / с / Писатель / но вы можете использовать любую базу, какую захотите. Кроме того, я скопировал некоторые другие перенаправления для страниц автора и RSS-каналов. Вы можете добавить этот блок кода в файл functions.php вашей темы.

    add_action ('init', 'add_author_rules'); function add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? author_name = $ match [1]", "top"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? author_name = $ совпадений [1] & paged = $ совпадений [2] ", "Топ"); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ match [1] & feed = $ match [2]", " Топ"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ совпадений [1] & feed = $ совпадений [2]" , "Топ");  

    Эта функция доступна даже без использования переменной $ wp_rewrite. Некоторым разработчикам нравится этот метод, потому что он проще, чем жесткое программирование со свойствами класса. Однако я также заметил, что этот метод не всегда надежен для некоторых установок WordPress. На самом деле есть второй вариант, чтобы добавить эти правила на крючок после сброса вашего .htaccess (см. Ниже).

    Авторская база с использованием generate_rewrite_rules

    Для написания этого метода нам снова понадобится глобальный класс $ wp_rewrite. Затем я установил новую переменную с именем $ new_rules который содержит ассоциативный массив данных. Мой пример кода ниже просто переписывает для основного раздела страницы автора.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

    Но если мы хотим включить несколько страниц и RSS-каналы, мы можем увеличить массив. У вас есть возможность создать функцию PHP для передачи данных ассоциативного массива, которые могут быть слишком сложными. Мы также можем разделить блоки данных через запятую, ведя себя как отдельные объекты в массиве. Проверьте мой обновленный код снова написано в файле темы functions.php.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / page /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> rules;  

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

    Сброс правил переписывания

    Всякий раз, когда вы вносите обновление в код перезаписи URL-адреса, изменения не применяются немедленно. Вы должны очистить правила переписывания .htaccess, чтобы ваш новый код был добавлен. Однако выполнение этого на каждой странице init чрезвычайно расточительно, поскольку он записывает в базу данных и жестко обновляет файл .htaccess..

    Лучший способ - получить доступ к странице постоянных ссылок в панели администратора и повторно сохранить изменения. Это всегда вызывает flush_rewrite_rules, так что вам никогда не придется беспокоиться о пользователях во внешнем интерфейсе, испытывающих проблемы с загрузкой. И это займет всего один раз, чтобы заново сохранить страницу и обновить все правила в вашей системе. Но если это не сработает, вы можете попробовать позвонить $ Wp_rewrite-> flush_rules ();

    Использование не-WP правил

    Внутри $ wp_rewrite класс у нас есть доступ к десяткам свойств. Один из наиболее важных вариантов $ Wp_rewrite-> non_wp_rules который собирает массив перенаправлений, которые не попадают в файл index.php.

    На самом деле это чаще всего используется при разработке плагинов WordPress. Вы можете нажать определенный пользовательский тип URL (например, / Календарь / июнь-2012 /) в бэкэнд вашего сайта (/wp-content/plugins/calendarplug/myscript.php). Но, конечно, есть и другие способы использования этого ассоциативного массива пользовательских правил перезаписи, помимо плагинов. Я привел отличный пример в контексте ниже.

    Маскировка ваших файлов тем

    Это общее предложение, которое я часто вижу на форумах WordPress. В идеале мы хотели бы сослаться на некоторые файлы внутри / WP-содержание / темы / MyTheme / папка с более элегантным URL. Обратите внимание, что для изменения структуры каталогов потребуется другой набор изменений WordPress..

    Внутренняя система переписывания WordPress всегда выдвигает контент к одному файлу маршрутизации. В случае по умолчанию мы используем index.php вместе с любыми дополнительными данными строки запроса. Но для сокрытия нашего стандартного каталога шаблонов (/ WP-содержание / темы / MyTheme / *) нам нужно будет отобразить много разных файлов.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Я написал новую функцию themes_dir_add_rewrites () извлечь весь основной контент из этих длинных URL и перенаправить их в бэкэнд. Обратите внимание, что мы используем это другое загадочное свойство класса $ wp_rewrite с именем non_wp_rules. Согласно документам, это правила, которые не относятся к файлу index.php в WP и будут обрабатываться на стороне сервера..

    Что такого замечательного в этих не-WP правилах, так это то, что вы все еще можете довольно легко управлять старым методом URL. Ничто не мешает вам ссылаться на:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Но это выглядит намного лучше, если вы можете сослаться на:

    /images/wordpress-urls-rewrite/logo.jpg вместо.

    Полезные инструменты и плагины

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

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

    Monkeyman Rewrite Analyzer

    При первом переходе к правилам переписывания этот плагин является обязательным. На самом деле он не меняет никаких правил для вашего сайта - он просто позволяет вам протестировать код и посмотреть, какие перенаправления идут на какие страницы. Он даже будет работать для тестирования пользовательских переменных запроса для любых пользовательских типов записей.

    AskApache RewriteRules Viewer

    Это похоже на плагин выше, за исключением того, что оно не позволяет вам проверять свои собственные правила. Вместо этого этот плагин будет отображать все правила WP вашего сайта по умолчанию и куда они перенаправляются. Это будет включать в себя все основные свойства $ wp_rewrite такие как настройки вашей постоянной ссылки и базы страниц / категорий / тегов.

    WP htaccess Control

    Здесь у вас есть другой набор правил для создания перенаправлений новой страницы. Плагин имеет свою собственную панель администратора, где вы можете редактировать переменные, такие как база авторов, базы страниц и даже добавлять свои собственные правила .htaccess..

    Этот метод отличается от построения вашего собственного с использованием wp_rewrite. Однако это может быть проще для технарей, которые действительно знают веб-серверы и чувствуют себя более комфортно при записи прямо в .htaccess..

    Переписать тестер правил

    На самом деле это не плагин WordPress, но, безусловно, это один из удобных инструментов для хранения файлов. Вы можете переписать правила перезаписи и протестировать их на своем сайте, даже не редактируя файл .htaccess. Это идеальный метод для удаления ошибок из вашего синтаксиса перед запуском в реальном времени в Интернете.

    DW ReWrite

    DW Rewrite - очень простой плагин, который сразу после установки создает 3 уникальных красивых URL. По умолчанию он изменит ссылки администратора, логина и регистрации на / админ, /авторизоваться, а также /регистр соответственно.

    Это может быть здорово, если вам нужно быстрое исправление для блога с несколькими авторами. Это будет специально скрывать смущающе запутанную регистрационную ссылку WordPress (/wp-login.php?action=register).

    Заключение

    Я надеюсь, что этот урок может дать вам несколько примеров, чтобы вы подумали о переписывании WordPress. CMS очень популярна, и разработчики продолжают выпускать новые функции каждый день. Настройка ваших собственных URL-адресов - это огромная часть пользовательской функциональности. Это дает вашему сайту свое уникальное присутствие и брендинг по сравнению с опциями по умолчанию.

    Если у вас возникли проблемы с правилами переписывания, вам никогда не будет трудно исправить ущерб. Просто удалив код функции и очистив ваши .htaccess правила, вы увидите, что ничего не изменилось. Обязательно ознакомьтесь с некоторыми другими подобными статьями, которые вы можете найти по этой теме. И если у вас есть какие-либо вопросы или комментарии, вы можете поделиться ими с нами в разделе пост-обсуждения.