Новости
    Рабочее место оператора
    Должностная инструкция оператора главного склада. Должность: Оператор главного склада (сырья и ингредиентов). Профиль должности (требования при приеме на работу): Женщина 23-35 лет. Образование –

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

    Заказать Детский квест для детей
    Сейчас огромной популярностью среди маленького поколения являются игровые квесты для детей. Буквально 5 лет назад в этом направлении толком никто не разбирался, но за последние годы каждый второй ребенок

    Детская парикмахерская киев
    Парикмахерские от одного до трех кресел обычно открывают при учреждениях, клубах, воинских частях и т. д. в качестве филиалов крупных парикмахерских. Городские же парикмахерские имеют от четырех кресел

WordPress Rewrite API - часть 1 - плагины Pippins

  1. Зачем использовать Rewrite API? Введение в умные постоянные ссылки
  2. Файл .htaccess
  3. Настройки постоянных ссылок WordPress
  4. Как работает Rewrite API?
  5. Где WordPress скрывает эту схему?
  6. Объект $ wp_rewrite
  7. Сокращение URL-адреса блога
  8. Движение вперед

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

Зачем использовать Rewrite API? Введение в умные постоянные ссылки

Это должно быть первым вопросом. Если вы уже установили ранее и работали с WordPress на сервере Apache, вы, вероятно, использовали API Rewrite, хотя вам не приходилось иметь с ним дело напрямую.

По умолчанию, когда WordPress установлен, все записи блогов и URL-адреса страниц записываются в этом формате.

  • http://example.com/index.php?p=1
  • http://example.com/index.php?p=5&category=7&product=15

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

  1. Это едва читаемо. Для обычного интернет-пользователя это выглядит криптографически.
  2. Это не оптимизировано для SEO.
  3. Едва запоминающийся, а иногда и URL-адрес довольно длинный для обмена.

Достаточно причин для улучшения нашего формата URL. Вот правильный способ сделать это:

  • http://example.com/first-blog-post
  • http://example.com/computers/laptops/hp

Этот формат намного лучше. Это более читабельно, SEO дружественный и короткий. Если вы не знаете о переписывании URL-адресов, справедливо спросить, как это может работать. Путь для компьютеров / ноутбуков / HP на самом деле не существует на сервере. Вот почему мы называем это переписыванием URL; когда URL-адрес не существует как физический путь, мы перенаправляем его в другое место, но не меняем его в адресной строке. Но как URL переписывается в WordPress?

Файл .htaccess

Если вы установили WordPress на сервер Apache с модулем mod_rewrite, он будет работать «из коробки» для вас. Проверьте файл .htaccess в корневом каталоге установки WordPress и откройте его. Вы должны найти это.

RewriteEngine On RewriteBase / RewriteRule ^ index \ .php $ - [L] RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. /index.php [L]

Выглядит ужасно, правда? Это на самом деле не сложно понять. В файле будет применено простое правило. Он перенаправит любой URL-запрос в index.php, но только в том случае, если допустимы два условия: когда запрошенное имя файла либо недействительно, либо не существует Условия не позволят перенаправить действительный URL-адрес, например URL-адрес изображения.

Например, http://example.com/my-blog-post будет перенаправлен на http://example.com/index.php; тогда как http://example.com/image.png все равно выдаст фактический файл изображения. Стоит еще раз отметить, что это не настоящий редирект. В адресной строке все равно будет отображаться умная ссылка. На странице Википедии есть краткая статья о Перезапись URL ,

Настройки постоянных ссылок WordPress

Включение перезаписи URL для WordPress довольно просто, если вы правильно настроите перенаправление (это сделано для вас на Apache, просто убедитесь, что у вас установлен модуль mod_rewrite).

На странице « Настройки»> «Постоянные ссылки» вы можете изменить настройки для URL-адресов. Я использую пользовательскую структуру, которая отображает URL как http://example.com/post_name

com/post_name

Пока это хорошо, но довольно ограниченно. Что, если вы хотите сократить URL-адрес поста в блоге, чтобы сделать его еще проще для обмена? Настоящий URL-адрес блога: http://example.com/2012_free_wordpress_plugins, и вы хотите сделать его http://example.com/freemium, чтобы упростить обмен и запоминание URL-адреса.

Панель настроек ограничена, но WordPress нет. API перезаписи открыт, и вы можете поиграть с ним и настроить его. Сначала я объясню, как на самом деле работает API перезаписи, а затем продемонстрирую пример. Не прыгайте с основ API переписывания; необходимо расширить свои знания за пределы тривиального примера.

Как работает Rewrite API?

Если вы пытались испортить API перезаписи до этого урока, вы можете подумать, что это сложный и изощренный механизм, который работает в WordPress. Это не. Это на самом деле довольно просто.

  1. Вы запрашиваете URL. (например, http://example.com/blog-post)
  2. Если ресурс существует (например, изображение или шрифт), ресурс возвращается.
  3. Если ресурс не существует, запрос перенаправляется в index.php.
  4. WordPress отображает страницу соответственно.

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

Где WordPress скрывает эту схему?

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

1 2 3 4 5 6 7 8 9 10 11 12 <? Php / * Имя плагина: URL Rewrite Описание: Тестирование API переписывания WordPress Автор: Abid Omar * / add_action ('template_redirect', 'ao_dump_rewrite'); function ao_dump_rewrite () {global $ wp_rewrite; var_dump ($ wp_rewrite); }?>

<? php / * Имя плагина: переписывание URL-адреса Описание: Тестирование API переписывания WordPress Автор: Абид Омар * / add_action ('template_redirect', 'ao_dump_rewrite'); function ao_dump_rewrite () {global $ wp_rewrite; var_dump ($ wp_rewrite); }?>

Объект $ wp_rewrite

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

WP_Rewrite Object (public 'permalink_structure' => string '/% postname% /' (length = 12) public 'use_trailing_slashes' => логический true public public 'author_base' => строка 'author' (length = 6) ... [rules ] => Массив ([category /(.+?)/?$] => index.php? Имя_категории = $ совпадений [1] [tag / ([^ /] +) / page /? ([0-9]) {1,}) /? $] => Index.php? Tag = $ match [1] & paged = $ match [2] [tag / ([^ /] +) /? $] => Index.php? tag = $ совпадений [1] [(. +?) / trackback /? $] => index.php? pagename = $ совпадений [1] & tb = 1 ...) [rewritecode] => Array () .. .)

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

  • http://example.com/index.php?p=1

Вот как WordPress загружает каждую страницу: читает параметры URL. Теперь, когда мы изменили нашу структуру URL на что-то более умное, например:

  • http://example.com/blog_post

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

Так что для http://example.com/blog_post WordPress на самом деле вызовет http://example.com/index.php?p=1 и будет использовать объект $ wp_rewrite для определения целевого URL. Давайте посмотрим, как выглядит одно правило перезаписи.

'page /? ([0-9] {1,}) /? $' => строка 'index.php? & paged = $ соответствия [1]' (длина = 28)

Ключ массива - это наш умный URL или как он должен выглядеть. Здесь очевидно, что это регулярное выражение , Совпадающим шаблоном является «page / {{some_digit}}», а конечной точкой является «index.php? & Paged = {{some_digit}}».

Это означает, что WordPress будет соответствовать любому http://example.com/page/2 (или любому другому номеру вместо 2) и перенаправит его на http://example.com/index.php?&paged=2.

Сокращение URL-адреса блога

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

Во-первых, это нацелено на то, чтобы научить работать с API Rewrite и начать с чего-то простого. Во-вторых, это можно применить практически ко всем URL-адресам в WordPress, а не только к URL-адресам сообщений в блоге.

Итак, начнем. Сначала создайте запись в блоге под названием « 2012 Бесплатные плагины для WordPress ». Если у вас есть постоянная структура% postname%, ваш URL будет выглядеть примерно так: http://example.com/2012-free-wordpress-plugins/

Неплохо, но вы хотите поделиться этим на сайтах вирусных сетей, таких как Twitter. Вы не хотите, чтобы ваш URL был слишком длинным, потому что эти сайты накладывают ограничения на количество символов, которое вы можете использовать. Вы хотите, чтобы это было http://example.com/freemium

Вы все еще помните массив правил в объекте $ wp_rewrite ? Та волшебная карта, которую WordPress использует для переключения между умными и классическими URL. Если мы взломаем эту схему, мы, вероятно, сможем заставить WordPress перенаправить наш http://example.com/freemium на желаемую запись в блоге. Хорошо. Как начать тогда?

  1. Определите вашу цель . Цель - ключ массива. Это формат Smart URL. Ранее мы говорили, что это формат регулярного выражения. Regex просты в использовании, но не волнуйтесь, мы не будем их использовать, поскольку наш шаблон прост. Наш образец - «freemium». Это то, что мы хотим соответствовать.
  2. Определите свой пункт назначения . Ваш пункт назначения - запись в блоге. Но это место назначения должно быть написано в старом классическом формате URL. Это «index.php? P = post_number». Чтобы найти номер сообщения, нажмите кнопку «Получить короткую ссылку» при редактировании сообщения. Если вы не найдете эту кнопку, вернитесь к старому постоянному стилю, и вы найдете номер сообщения.

Вот и все. Теперь давайте отредактируем объект $ wp_rewrite. Помните наш старый плагин? Ну, замените код PHP следующим

1 2 3 4 5 6 7 8 9 10 11 12 13 <? Php / * Имя плагина: URL Rewrite Описание: Тестирование API переписывания WordPress Автор: Abid Omar * / add_action ('init', 'ao_add_rewrite_rule'); function ao_add_rewrite_rule () {add_rewrite_rule ('freemium', 'index.php? & p = 15', 'top'); flush_rewrite_rules (); }?>

<? php / * Имя плагина: переписывание URL-адреса Описание: Тестирование API переписывания WordPress Автор: Абид Омар * / add_action ('init', 'ao_add_rewrite_rule'); function ao_add_rewrite_rule () {add_rewrite_rule ('freemium', 'index.php? & p = 15', 'top'); flush_rewrite_rules (); }?>

Кто сказал, что это сложно? Вы можете спросить о паре вещей

  1. add_rewrite_rule () Функция добавит новое правило в объект $ wp_rewrite.
  2. flush_rewrite_rules () Функция прикажет WordPress перестроить объект $ wp_rewrite. Это необходимо, так как мы изменили наш объект. Однако плохая практика - вызывать эту функцию каждый раз, когда страница загружается, поскольку это приводит к ненужным накладным расходам. Поместите эту функцию в действия активации и деактивации вашего плагина, чтобы он выполнялся только один раз. Я использовал крючок init только для демонстрационных целей.

Вы можете использовать первый фрагмент кода для печати вашего объекта $ wp_rewrite. Вы найдете новое добавленное правило в массиве rules.

Движение вперед

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

Зачем использовать Rewrite API?
Где WordPress скрывает эту схему?
Зачем использовать Rewrite API?
Php?
Php?
Но как URL переписывается в WordPress?
Что, если вы хотите сократить URL-адрес поста в блоге, чтобы сделать его еще проще для обмена?
Как работает Rewrite API?
Где WordPress скрывает эту схему?