Полное руководство по использованию постоянных ссылок WordPress

Постоянная ссылка — это ссылка, которая используется для доступа к определенной части контента, доступного на сайте.

Например, главная страница в Kinsta доступна по адресу https://kinsta.com/, блог — по адресу https://kinsta.com/blog/, а для отдельных записей используются такие ссылки, как, например, https://kinsta.com/blog/wordpress-widgets/.

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

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

Содержание

Что такое постоянные ссылки WordPress?

Постоянные ссылки WordPress определяются в официальном Кодексе WordPress как:

«Постоянные URL-адреса отдельных записей в блоге, а также категорий и других списков записей в блоге».

Каждая страница на сайте (включая записи, страницы, страницы архивов и другие страницы, такие как страница 404) будет иметь свою постоянную ссылку.

Так, например, главная страница вашего WordPress-сайта будет иметь URL-адрес yoursite.com, а блог — yoursite.com/blog.

Если у вас в блоге есть категория «Рекомендуемые», это может быть один из нескольких URL-адресов:

  • com/category/featured
  • com/blog/featured или просто
  • com/featured.

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

WordPress использует это, чтобы получить уникальную постоянную ссылку для отдельной записи и вывести ее в элементе <a>, чтобы ее можно было использовать в качестве ссылки в списках записей блога.

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

Разница между постоянными ссылками, слагами и ссылками

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

Постоянная ссылка — это полная ссылка на запись. Итак, ссылка, которую я дал ранее на пост о виджетах — https://kinsta.com/blog/wordpress-widgets/.

Слаг является последней частью этой постоянной ссылки, и он уникален для этой записи. В данном случае это wordpress-widgets.

Этот слаг генерируется автоматически на основе заголовка записи. И если вы хотите создать слаг для записи вручную, то это можно сделать. Я покажу вам, как (и почему вам может понадобиться это сделать) чуть позже в этой статье.

Как создаются постоянные ссылки WordPress

На статическом веб-сайте URL-адрес идентифицирует запрашиваемый ресурс по его имени и пути к каталогу, как показано в приведенном ниже примере:

https://example.com/path/to/resource/wordpress-permalinks.html

Чтобы получить хорошо структурированные URL-адреса, нам нужна хорошо структурированная файловая система и правильные имена ресурсов.

Однако интернет динамичен, и мы привыкли управлять веб-сайтами с помощью CMS, использующих базу данных, то есть URL-адреса будут содержать ряд параметров, значения которых определяют запрос, который будет направляться к базе данных.

Рассмотрим следующий пример:

https://example.com/?key1=val1&key2=val2

В этом URL-адресе вы видите разделитель (знак вопроса) и набор пар ключ / значение (разделенных амперсандом), которые составляют строку запроса. URL-адрес не соответствует требованиям юзабилити и доступности и должен быть преобразован в более значимую и удобную для SEO постоянную ссылку.

Способ преобразования этих «уродливых» URL-адресов в оптимизированные постоянные ссылки зависит от используемого веб-сервера. Если вы являетесь пользователем Apache, вам потребуется добавить набор директив перезаписи в файл .htaccess корневой папки. Если вы являетесь пользователем Nginx, нужно добавить директиву try_files в основной файл конфигурации.

Но не волнуйтесь! Большую часть времени вам не потребуется настраивать веб-сервер построчно, потому что WordPress сделает это за вас.

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

Обзор запросов WordPress

WordPress предоставляет класс WP_Query именно для построения запроса, его выполнения и сохранения результатов из базы данных. Благодаря этому классу нам не нужно заботиться о запросе, потому что WP_Query автоматически обрабатывает, строит и выполняет запрос. Затем, согласно иерархии шаблонов, WordPress вернет запрошенный ресурс.

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

Более того, если функционала доступного по умолчанию будет недостаточно, разработчики могут создавать пользовательские запросы, разрабатывая новые экземпляры класса WP_Query (объект запроса) или передавая конкретные параметры существующему экземпляру запроса перед его выполнением.

Параметры запроса называются переменными запроса и делятся на три группы.

Публичные переменные запросов

Эти переменные являются публичными в том смысле, что они доступны для использования в публичных запросах (то есть URL-адресах). Благодаря этим переменным мы можем запросить посты авторов:

?author=12?
author_name=mickey

Посты по категории или тегу:

?cat=4,5,6
?category_name=CMS
?tag=wordpress

Посты по дате и времени:

?monthnum=201601
?year=2015?w=13
?day=31

По записи или странице:

?p=123
?name=hello-world
?page_id=234

И многое другое.

Закрытые переменные запросов

Эти переменные не предназначены для добавления в строки запроса URL-адреса. Их можно использовать для воздействия на запросы только внутри скрипта (плагина или файла functions.php используемой темы).

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

?meta_key=city&meta_value=London

meta_key и meta_value являются переменными закрытого запроса, которые не должны быть определены в строках запроса. Они должны быть переданы экземпляру объекта запроса, как я покажу позже.

Смотрите полный список публичных и закрытых переменных запроса в кодексе WordPress.

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

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

При этом давайте вернемся к постоянным ссылкам.

Некрасивые постоянные ссылки WordPress и переменные запросов

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

Обычная настройка в панели «Постоянные ссылки»

В качестве примера рассмотрим приведенные ниже URL-адреса:

https://example.com/?cat=5
https://example.com/?cat=5,7,9

В ответ на эти URL-адреса WordPress возвращает архив записей, принадлежащих указанным категориям.

Мы не ограничены одним параметром для каждого URL-адреса. В следующих примерах мы создаем более сложные запросы:

?author_name=lucy&category_name=WebDev?tag=wordpress&m=201606

В первой строке запроса author_name и category_name затребуют все записи указанного автора, опубликованные в категории WebDev. Во второй строке запроса tag и m затребуют все записи, помеченные как «wordpress» и опубликованные в июне 2016 года.

Как видите, мы можем установить более одной переменной запроса и заставить WordPress запускать расширенные запросы, просто добавляя в строки запроса соответствующие пары «ключ / значение».

Красивые постоянные ссылки: лучшая альтернатива

Включая красивые постоянные ссылки, мы формируем удобную, доступную и оптимизированную для SEO структуру URL-адресов. Давайте сравним приведенные ниже URL-адреса:

https://example.com/?p=123
https://example.com/wordpress-permalinks/

В этом примере некрасивая постоянная ссылка показывает переменную p и ее значение (идентификатор записи), в то время как красивый URL-адрес показывает слаг записи.

WordPress предоставляет четыре формата красивых ссылок, которые мы можем выбрать в панели настроек постоянных ссылок, как показано на рисунке, приведенном ниже.

Красивые постоянные ссылки в настройках постоянных ссылок

Но вы не ограничены форматами, доступными по умолчанию, так как WordPress позволяет настраивать формат, устанавливая один или несколько тегов структуры ссылок.

Пользовательские параметры

Я расскажу об этом более подробно чуть позже в этой статье.

Почему красивые постоянные ссылки важны?

Использование красивых постоянных ссылок для WordPress-сайта имеет два преимущества: SEO и пользовательский опыт.

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

Для UX красивые постоянные ссылки лучше, потому что они облегчают пользователям запоминание и использование URL-адресов на сайте. Никто не помнит URL-адрес страницы с контактами, если это yoursite.com/?p=456. Но люди быстро запомнят адрес yoursite.com/contact .

Постоянные ссылки, слаги и SEO

Слаг записи — это самая последняя часть URL-адреса записи. Если вы настроили параметры постоянных ссылок WordPress таким образом, чтобы использовалось имя записи, слаг для записи под названием «how to create pretty permalinks» будет автоматически создан как oursite.com/how-to-create-pretty-permalinks/.

Это красивый слаг. Он сообщает пользователям, о чем эта запись, и для поисковых систем содержит «pretty permalinks».

Но это можно улучшить еще больше.

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

Так что публикация под названием «how to create pretty permalinks» могла бы быть лучше, если бы она содержала фрагмент pretty permalinks, то есть yoursite.com/pretty-permalinks/. Или, если у вас есть несколько записей с красивыми постоянными ссылками, и вы хотите предоставить конкретную ссылку, связанную с тем, что это руководство по созданию красивых постоянных ссылок, вы можете использовать create-pretty-permalinks, что дает yoursite.com/create-pretty-permalinks.

Или, можно пойти еще дальше, чтобы улучшить SEO еще больше, включив «WordPress»: example.com/create-wordpress-pretty-permalinks.

Когда люди просматривают ссылку в результатах поиска, вы также не хотите, чтобы результаты поиска были такими длинными, чтобы их нельзя было прочитать. Ниже продемонстрировано два результата, которые я нашла для блога Kinsta, когда прогуглила «wordpress permalinks».

Результат из Google — WordPress permalinks

У каждого из них оптимизированы слаги. Первый — wordpress-premalinks-url-rewriting, указывающий на то, что он нацелен на эти ключевые слова, а второй — wordpress-slug, который еще более конкретный.

Эти слаги очень конкретны. Они сообщают поисковым системам, о чем рассказывает эта запись, и ничего больше.

Вы можете оптимизировать слаги для SEO, сначала выбрав в панели настроек постоянных ссылок «Название записи», а затем вручную отредактировав слаг для каждой записи при ее написании.

Постоянные ссылки, слаги и UX

Использование красивых постоянных ссылок и коротких, запоминающихся слагов также даст вам преимущества с точки зрения UX.

Для удобного использования веб-сайта требуются:

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

URL-адрес никогда не должен изменяться, так как он может храниться и передаваться различными способами. Вот почему мы называем URL-адреса постоянными. Кроме того, URL-адрес должен быть семантическим, в том смысле, что он является непосредственным и интуитивно понятным для неопытных пользователей.

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

Как изменить настройки постоянных ссылок в WordPress

В WordPress можно изменить постоянные ссылки сразу несколькими способами:

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

Давайте рассмотрим каждый из этих вариантов.

Редактирование общих настроек постоянных ссылок

Экран настроек «Постоянные ссылки» — это первое место для настройки постоянных ссылок. Для доступа к ней перейдите в меню Настройки> Постоянные ссылки.

Панель настроек постоянных ссылок

Общие настройки

Первый раздел посвящен настройкам отдельных записей. Варианты:

  • Обычный: для ссылки используется идентификатор записи. Это будет иметь смысл для браузеров, но не будет много значить для людей или поисковых систем. Подобный URL-адрес выглядит так: com/?p=123.
  • День и имя. Сюда входит полная дата публикации записи, а также ее название (или, точнее, его фрагмент). Это выглядит так: com/2020/06/01/my-post/.
  • Месяц и имя: это более короткая версия дня и названия записи, с указанием только месяца и года, а не дня: com/2020/06/my-post/.
  • Числовой: как и параметр обычный, он использует идентификатор записи и не очень удобен для пользователей. Пример URL-адреса com/archives/123.
  • Название записи: этот вариант не включает в себя даты или идентификаторы записи, а использует только слаг, например, com/my-post/.
  • Пользовательская структура: здесь можно создать собственную пользовательскую структуру URL-адреса. Используйте теги для получения информации, основанной на данных записи, и статический текст, чтобы добавить что-то, что не будет изменяться для всех записей.

Эти теги являются ключевыми словами, заключенными в символы %. WordPress предоставляет следующие теги:

  • %year%— год публикации записи (четыре цифры).
  • %monthnum%— месяц публикации (две цифры).
  • %day%— день публикации (две цифры).
  • %hour%— час публикации (две цифры).
  • %second%— минута публикации (две цифры).
  • %second%— секунда публикации (две цифры).
  • %post_id%— уникальный идентификатор записи (целое число).
  • %postname%— слаг записи (то есть строка, представляющая заголовок записи).
  • %category%— слаг категории.
  • %author%— слаг автора.

Попробуйте активировать значение «Пользовательская структура» и добавить одну из следующих строк в текстовое поле:

  • /%author%/%postname%/
  • /%year%/%postname%/
  • /%category%/%postname%/

Любая из этих строк генерирует красивую постоянную ссылку с определенными семантическими значениями, как показано ниже:

example.com/rachelmccollin/wordpress-permalinks/
example.com/2020/wordpress-permalinks/
example.com/CMS/wordpress-permalinks/

В первом примере URL-адрес выделяет автора записи. Два других формата сообщают нам год публикации и категорию записи соответственно. Вам решать, какой формат подходит вашему WordPress – сайту больше всего.

Выбрав нужный вариант, перейдите в раздел «Дополнительно» или нажмите кнопку «Сохранить изменения», чтобы сохранить установленные настройки.

Дополнительные настройки постоянных ссылок

Наряду с настройками для отдельных записей также можно задать собственную структуру постоянных ссылок для архивов категорий и тегов.

Если вы этого не сделаете, по умолчанию в конце постоянной ссылки будет использоваться /category/category-slug/. Так что если у вас есть категория «featured», страница ее архива будет иметь URL-адрес yoursite.com/category/featured.

Дополнительные настройки постоянных ссылок

Вы можете изменить это в разделе «Дополнительно» страницы настроек «Постоянные ссылки». Поэтому, если вы хотите, чтобы в качестве постоянной ссылки для архива этой категории использовался URL-адрес yoursite.com/blog/featured/, можно указать blog в поле «База категорий. При этом не нужно вставлять обратную косую черту или использовать теги.

Как изменить постоянные ссылки и слаги для отдельных записей и страниц

После того, как вы активировали на своем WordPress-сайте красивые постоянные ссылки, пришло время оптимизировать слаги для отдельных записей и страниц.

Лучше всего делать это при создании контента. Если вы измените слаг публикации, то вы измените URL-адрес, и все ссылки, которыми вы или посетители вашего сайта делились в прошлом, больше не будут работать.

Редактирование слага записи осуществляется в панели редактирования записи. Перейдите к списку записей и выберите запись, которую вы хотите отредактировать. (Если вы находитесь в процессе создания записи, то уже находитесь в этой панели).

В панели редактирования записи выберите «Документ» с правой стороны и перейдите в раздел «Постоянная ссылка». Нажмите на стрелку справа от нее, если она еще не открыта.

Редактирование постоянной ссылки в панели редактирования записи

В поле «Слаг URL-адреса» будет отображаться автоматически созданный слаг. Вы можете отредактировать его, чтобы сделать короче и конкретнее.

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

Редактирование слага

Теперь нажмите кнопку «Опубликовать» или «Обновить», чтобы сохранить внесенные изменения.

Не забывайте: если вы отредактировали слаг для существующей записи, вы могли создать проблему для людей, которые имеют исходную ссылку, и вам необходимо настроить соответствующие перенаправления.

Как изменить настройки постоянных ссылок для страниц архива

Чтобы изменить настройки постоянных ссылок для отдельных страниц архива, можно отредактировать настройки для базы «категория» или «тег» в панели настроек «Постоянные ссылки». Вы также можете изменить слаг для отдельной категории, тега или пользовательской таксономии.

Давайте посмотрим, как можно это сделать, а затем перейдем к редактированию постоянных ссылок для пользовательских таксономий и типов записей при их регистрации.

Изменение слагов для категорий и тегов

Для этого перейдите в меню Записи> Категории (или Записи> Теги).

Панель редактирования категорий

Найдите категорию или тег, для которых вы хотите отредактировать слаг, и нажмите на их название.

Редактирование слага категории

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

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

Изменение слагов для пользовательских таксономий

Когда вы регистрируете пользовательскую таксономию, страницы архива для этой таксономии автоматически будут иметь URL-адрес вида yoursite.com/taxonomy/term, где taxonomy является идентификатором таксономии, а term — слагом термина.

Представим, что вы регистрируете пользовательскую таксономию для языков с идентификатором kinsta_language, которая использует префикс, чтобы гарантировать, отличие от любых других таксономий, зарегистрированных другими плагинами. Например, вы могли бы создать термин french.

URL-адрес архива этого термина таксономии будет выглядеть как yoursite.com/kinsta_language/french.

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

Ниже приведен код, который нужно использовать для регистрации пользовательской таксономии, включая аргумент rewrite.

function kinsta_register_taxonomy() {                

 // языки
 $labels = array(
  'name'=> __( 'Languages' ),
  'singular_name' => __( 'Language' ),
  'search_items' => __( 'Search Languages' ),
  'all_items' => __( 'All Languages' ),
  'edit_item' => __( 'Edit Languages' ),
  'update_item' => __( 'Update Languages' ),
  'add_new_item' => __( 'Add New Language' ),
  'new_item_name' => __( 'New Language Name' ),
  'menu_name' => __( 'Languages' ),
 );

 $args = array(
  'labels' => $labels,
  'hierarchical' => true,
  'sort' => true,
  'args' => array( 'orderby' => 'term_order' ),
  'rewrite' => array( 'slug' => 'language' ),
  'show_admin_column' => true,
  'show_in_rest' => true
 );

 register_taxonomy( ‘kinsta_language', array( 'post', ‘attachment' ), $args);   

}

add_action( 'init', 'kinsta_register_taxonomy' );

В этом коде особенно важна следующая строка:

'rewrite' => array( 'slug' => 'language' ),

Она изменяет слаг с kinsta_language (идентификатор) на language (новое значение). Таким образом, новый URL-адрес будет выглядеть как yoursite.com/language/french. Гораздо удобнее для пользователей сайта!

Как изменить слаг для пользовательских типов записей

Процесс регистрации пользовательских типов записей похож на регистрацию пользовательских таксономий, поэтому у них будет URL-адрес, содержащий идентификатор пользовательского типа записей.

Давайте представим, что вы регистрируете пользовательский тип записи с именем kinsta_book и создаете запись с таким типом записи под названием «Huckleberry Finn» со слагом huckleberry-finn.

URL-адрес будет выглядеть как yoursite.com/kinsta_book/huckleberry-finn. И слаг для архива этого типа записей будет yoursite.com/kinsta_book.

Опять же, вы можете изменить это при регистрации пользовательского типа записи, используя аргумент rewrite. Ниже приведен код, включающий этот аргумент:

function kinsta_register_post_type() {

 // книги
 $labels = array(
  'name' => __( 'Books' ),
  'singular_name' => __( 'Book' ),
  'add_new' => __( 'New Book' ),
  'add_new_item' => __( 'Add New Book' ),
  'edit_item' => __( 'Edit Book' ),
  'new_item' => __( 'New Book' ),
  'view_item' => __( 'View Book' ),
  'search_items' => __( 'Search Books' ),
  'not_found' =>  __( 'No Books Found' ),
  'not_found_in_trash' => __( 'No Books found in Trash' ),
 );

 $args = array(
  'labels' => $labels,
  'has_archive' => true,
  'public' => true,
  'hierarchical' => false,
  'supports' => array(
   'title',
   'editor',
   'excerpt',
   'custom-fields',
   'thumbnail',
   'page-attributes'
  ),
  'taxonomies' => array( ‘kinsta_language', 'category'),
  'rewrite'   => array( 'slug' => 'book' )
 );
 
 register_post_type( ‘kinsta_book', $args );

}

add_action( 'init', 'kinsta_register_post_type' );

Важна эта строка для слага:

'rewrite'   => array( 'slug' => 'book' )

Так что теперь URL-адреса будут выглядеть как yoursite.com/book/huckleberry-finn для отдельной книги и yoursite.com/book для архива.

Редактирование постоянных ссылок с помощью пользовательских полей

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

Ниже описано, как создать собственный мета-запрос (то есть запрос, который извлекает записи по настраиваемому полю), используя преимущества пользовательских запросов.

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

Вот как…

Создайте плагин в каталоге wp-content/plugins. Добавьте функцию для регистрации переменных запроса:

/**
 * Register custom query vars
 *
 * @param array $vars The array of available query variables
 */

function myplugin_register_query_vars( $vars ) {

 $vars[] = 'city';
 return $vars;

}

add_filter( 'query_vars', 'myplugin_register_query_vars' );

Фильтр Query_vars позволяет добавлять, удалять или изменять публичные переменные запросов перед выполнением запроса. Функция обратного вызова в этом примере сохраняет в качестве аргумента массив доступных переменных, добавляет новую переменную и возвращает тот же массив.

Затем добавьте функцию, которая использует значение переменной для изменения запроса:

/**
 * Составляем пользовательский запрос
 *
 * @param $query obj The WP_Query instance (passed by reference)
 *
 */

function myplugin_pre_get_posts( $query ) {

 // проверяем, зарегистрировался ли пользователь в панели администрирования
 // или текущий запрос не является основным запросом
if ( is_admin() || ! $query->is_main_query() ){
  return;
 }

 $city = get_query_var( 'city' );

 // добавляем элементы meta_query
 if( !empty( $city ) ){
  $query->set( 'meta_key', 'city' );
  $query->set( 'meta_value', $city );
  $query->set( 'meta_compare', 'LIKE' );
 }

}

add_action( 'pre_get_posts', 'myplugin_pre_get_posts', 1 );

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

  • Функция обратного вызова хранит экземпляр объекта $query, который передается по ссылке, а не по значению. Это означает, что любые изменения в объекте запроса влияют на исходный запрос, а не на его копию. По этой причине мы должны быть уверены в том, какой запрос будет выполнен (основной запрос).
  • Позже, мы получаем значение города от текущей строки запроса благодаря функции get_query_var.
  • Наконец, если $city не пуст, мы можем установить элементы мета-запроса meta_key, meta_value и meta_compare. Последние являются закрытыми переменными запросов, недоступными для публичных запросов. Их значения могут быть установлены только из скрипта.

Теперь активируйте плагин, добавьте пользовательское поле города для нескольких записей. Перейдите в меню Настройки> Постоянные ссылки, чтобы обновить постоянные ссылки, хотя на самом деле вам ничего не потребуется делать; достаточно просто перейти в эту панель.

Теперь посетите URL-адрес, приведенный ниже:

https://example.com/?city=London

В ответ на этот запрос WordPress вернет все записи, в которых значение поля city равно London.

Наша последняя задача — преобразовать некрасивый URL-адрес приведенного выше примера в красивую структуру постоянных ссылок. Давайте добавим в наш плагин следующую функцию:

/**
* Добавляем теги и правила перезаписи
*/

function myplugin_rewrite_tag_rule() {

 add_rewrite_tag( '%city%', '([^&]+)' );
 add_rewrite_rule( '^city/([^/]*)/?', 'index.php?city=$matches[1]','top' );

}

add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);

Функции add_rewrite_tag и add_rewrite_rule являются частью API Rewrite. add_rewrite_tag позволяет WordPress знать о переменной запроса city, а add_rewrite_rule определяет новое правило перезаписи. Обе функции должны быть подключены к действию init. Благодаря новому тегу и правилу мы можем использовать приведенный ниже URL-адрес:

https://example.com/city/London/

WordPress вернет архив записей, в которых значение пользовательского поля city — London.

Примечание: каждый раз, когда добавляется новое правило перезаписи, постоянные ссылки WordPress должны обновляться через меню настроек «Постоянные ссылки» в панели администрирования WordPress.

Как изменить постоянные ссылки в WooCommerce

WooCommerce создает собственные типы записей и таксономии, которые имеют постоянные ссылки по умолчанию, определенные плагином.

Вы можете редактировать настройки постоянных ссылок и слагов для всех них.

Изменение постоянных ссылок категории товара, тега и атрибута

Существует два ключевых аспекта редактирования постоянных ссылок для категорий товаров, тегов и атрибутов: структура и слаг. Они работают аналогично обычным категориям и тегам.

Чтобы изменить структуру постоянных ссылок, перейдите в меню Настройки> Постоянные ссылки и найдите раздел «Дополнительно», в который WooCommerce добавляет несколько дополнительных полей.

Дополнительные настройки постоянных ссылок с установленным плагином WooCommerce

Здесь вы можете изменить настройки постоянных ссылок для трех пользовательских таксономий, добавленных плагином WooCommerce:

  • Категории товаров: по умолчанию это /product-category/,но вы можете изменить это, если в вашем интернет-магазине используется другая терминология. Убедитесь в том, что вносимые вами изменения не противоречат настройкам для обычных категорий, это не одно и то же.
  • Теги товаров: по умолчанию это /product-tag/, и вы можете изменить его, если захотите. Убедитесь в том, что у вас нет конфликта с обычными тегами записей.
  • Атрибуты товаров: они работают не так, как две другие таксономии, и имеют другую структуру. Что бы вы здесь ни добавили, в конце всегда будет указан слаг названия отдельного атрибута (например, size) и самого атрибута (термин, например, large).

Если вы хотите отредактировать слаг для отдельной категории или тега, перейдите в меню Товары> Категории (или Товары>Теги) и отредактируйте их так же, как и обычные теги и категории.

Редактирование слагов категорий товаров

Редактирование атрибутов отличается тем, что у вас есть не только сам атрибут, но и термины атрибута.

Перейдите в меню Товары> Атрибуты.

Панель атрибутов товара

При создании нового атрибута вы используете поле «Слаг», чтобы установить слаг так же, как и для тега или категории. В качестве альтернативы, чтобы отредактировать слаг для существующего атрибута, нажмите кнопку «Изменить», расположенную под этим атрибутом.

Редактирование слагов атрибутов товара

Нажмите кнопку «Обновить», чтобы сохранить внесенные изменения.

Чтобы изменить атрибуты термина, перейдите в панель атрибутов и кликните по ссылке «Настроить термин», расположенной рядом с атрибутом. Откроется список терминов для этого атрибута.

Список атрибутов товара

Теперь измените слаг для этого термина так же, как для категории или тега. Затем он будет добавлен к URL-адресу архива товаров, содержащих этот термин.

Изменение постоянных ссылок на товары

Постоянные ссылки на товары редактируются через меню Настройки> Постоянные ссылки. Прокрутите страницу вниз до раздела «Постоянные ссылки на товар».

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

Здесь вы сможете выбрать одну из четырех настроек постоянных ссылок для товаров:

  • По умолчанию: Если вы уже активировали красивые постоянные ссылки, будет использоваться слаг для каждого товара с /product/base.
  • База магазина: Вместо использования /product/ будет использоваться /shop/.
  • База магазина с категорией: вставляет в URL-адрес категорию текущего товара. Можно добавить ключевые слова, на которые вы хотите ориентироваться, если ваши категории товаров соответствуют им, но это не поможет UX, поскольку создает длинные URL-адреса.
  • Пользовательская база: создает пользовательскую структуру URL-адресов, используя слова, которые относятся к вашему интернет-магазину. Вы не можете полностью удалить базу, а должны что-то использовать.

Выбрав нужный вариант, нажмите кнопку «Сохранить изменения», чтобы задействовать свой выбор.

Вы также можете редактировать слаг для отдельного товара в панели редактирования товара, точно так же, как и для записи или страницы.

Как изменить постоянные ссылки WordPress с помощью плагина

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

Плагин WordPres Custom Permalinks

  • Плагин Custom Permalinks позволяет установить для URL-адреса любой категории записей или тега все, что вы хотите. Он также устанавливает перенаправления, чтобы старые URL-адреса все еще работали.
  • Плагин Permalink Manager Lite поддерживает пользовательские типы записей (в профессиональной версии), а также пользовательские таксономии. Он также включает перенаправления и работает со сторонними плагинами, такими как WooCommerce и Yoast.

Как изменить постоянные ссылки WordPress с помощью phpMyAdmin

Если вы знаете, что делаете, и уверены в том, что ничего не испортите, вы также можете редактировать постоянные ссылки с помощью phpMyAdmin.

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

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

Войдите в phpMyAdmin.

Если вы являетесь клиентом Kinsta, то можете сделать это, войдя в MyKinsta и выбрав сайт, с которым хотите работать.

Прокрутите страницу вниз и нажмите кнопку «Открыть phpMyAdmin».

Откройте phpMyAdmin в MyKinsta

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

Нажмите вверху на вкладку «Базы данных» и выберите базу данных, с которой хотите работать.

Структура базы данных в phpMyAdmin

Выберите таблицу wp_options и найдите запись permalink_structureв столбце option_name. Возможно, вам придется искать дальше первой страницы записей.

Поиск записи permalink_structure

Нажмите на ссылку «Изменить» слева от этой записи, затем в поле option_value добавьте структуру постоянных ссылок, которую вы хотите использовать. Вы можете применять теги, которые мы рассмотрели ранее.

Редактирование структуры постоянных ссылок

Нажмите кнопку «Вперед» После этого постоянные ссылки будут обновлены.

Работа с постоянными ссылками на изображения

Изображения имеют собственные постоянные ссылки, и для каждого изображения или медиа-файла, который вы загружаете на WordPress-сайт, будет создано сразу несколько ссылок:

  • Ссылка на загруженное вами изображение — исходное изображение.
  • Ссылки на новые изображения, созданные с использованием размеров медиа, которые вы задали в меню Настройки> Медиа.

Ссылка на исходное изображение

Когда вы загружаете изображение на WordPress-сайт, будет создана уникальная ссылка на файл. Она будет включать в себя путь к тому месту, где он хранится, то есть wp-content/uploads.

Также будет указана дата загрузки изображения. Это означает, что если вы загрузите другое изображение с тем же именем файла в следующем месяце (или в следующем году), изображения не будут перепутаны, поскольку у них будут уникальные пути к файлам.

Если вы загрузите изображение с именем funnycat.jpg 1 апреля, его ссылкой будет yoursite.com/wp-content/uploads/04/funnycat.jpg. 04 указывает на то, что файл был загружен в апреле. WordPress создает нумерованную папку в каталоге загрузки для каждого месяца.

Если вы загрузили файл, который не является изображением, URL-адреса формируются аналогичным образом: yoursite.com/wp-content/uploads/04/document.pdf.

Если вы загрузили более одного файла с одним и тем же именем в течение определенного месяца, WordPress добавит число в конец имени файла. Поэтому, если я загружу другое изображение с именем funnycat.jpg, оно получит название funnycat-1.jpg.

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

Вы также можете найти ссылку на файл вложения, перейдя в меню Медиафайлы> Библиотека, и выбрав файл. После этого отобразится экран редактирования файла, и вы сможете найти его URL-адрес в поле «URL-адрес файла» справа.

Исходная ссылка на изображение

Вы также можете создать ссылку на файл с помощью функции wp_get_attachment_image(), предоставляемой WordPress. Это рекомендованная практика, поскольку ее применение означает, что ссылка не изменится, если вложение будет перемещено в будущем. Это функция, которую вы применяете в плагине или файле шаблона темы оформления, и она использует уникальный идентификатор файла вложения.

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

Чтобы получить это изображение в файле шаблона или плагина, мне нужно использовать следующий код:

<?php wp_get_attachment image(‘4995’); ?>

Это позволит получить полноразмерное изображение. Если бы я хотела вывести его, я бы добавила echo:

<?php echo wp_get_attachment image( ‘4995’ ); ?>

Постоянные ссылки на изображения разных размеров

WordPress также создает изображения с использованием настроек размера файла, которые были заданы для сайта. Это делается в меню Настройки> Медиафайлы.

Панель настроек медиафайлов

Поэтому, если изображение больше, чем указанный большой размер, будет создано еще три изображения — большое, среднее и миниатюра.

Изображения не называются в соответствии с этим соглашением имен, потому что вы можете в будущем изменить настройки для них. Вместо этого в имени файла используются размеры файла, и он сохраняется в том же месте, что и исходное изображение, то есть в папке месяца в директории wp-content/uploads.

Самый простой способ найти ссылки — через FTP-клиент найти все изображения, загруженные за определенный месяц.

Загруженные изображения в FTP-клиенте

Давайте рассмотрим в качестве примера изображение с именем funnycat.jpg. Вы можете увидеть его на скриншоте, приведенном выше.

WordPress также создал дополнительные файлы, используя настройки размера файла для моего сайта:

  • funnycat-150×150.jpg
  • funnycat-222×300.jpg
  • funnycat-300×200.jpg
  • funnycat-757×1024.jpg
  • funnycat-768×1040.jpg
  • funnycat-1135×1536.jpg
  • funnycat-1513×2048.jpg

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

Однако если вы хотите создать ссылку на изображение лучшим вариантом, будет использование функции wp_get_attachment_image(), которую мы уже рассмотрели, а также добавление дополнительного параметра для размера изображения.

Таким образом, чтобы вывести изображение среднего размера, необходимо использовать приведенный ниже код:

<?php echo wp_get_attachment image( ‘4995’, ‘medium’ ); ?>

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

Как перенаправлять постоянные ссылки для различных типов контента

Редактирование слага для существующей записи или изменение параметров постоянной ссылки может вызвать проблемы, если вы ранее публиковали записи, используя старые ссылки. Если кто-то переходит на этим ссылкам, они попадут на страницу 404.

Вы можете исправить это, создав перенаправления со старых ссылок на новые.

Перенаправление отдельных записей и страниц

Чтобы перенаправить старый слаг поста на новый, необходимо установить правило перенаправления для этих двух URL-адресов.

Если вы работаете в Kinsta, то можете создавать правила перенаправления в панели инструментов MyKinsta.

Найдите свой сайт, а затем выберите пункт «Перенаправления».

Перенаправления в MyKinsta

Нажмите кнопку «Добавить правило перенаправления», чтобы открыть всплывающее окно с правилами перенаправления.

Добавление правила перенаправления в MyKinsta

Чтобы добавить перенаправление, выберите «Редирект 301», затем введите старый слаг в качестве значения «Редирект с» и новый слаг в качестве значения «Редирект на».

Нажмите кнопку «Добавить правило перенаправления», и перенаправление будет настроено.

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

Ниже вы можете видеть, что я изменила слаг для одной из записей, а плагин перехватил его и установил правило перенаправления.

Настройка правила перенаправления

Перенаправление страниц архивов

Если вы измените структуру страниц архивов с помощью раздела «Дополнительно» на странице настроек «Постоянные ссылки», любой, кто использует старую ссылку на архив категории, будет перенаправлен на страницу 404. Поэтому необходимо настроить перенаправление с подстановочными знаками.

В MyKinsta создайте правило перенаправления со старой базовой структуры на ту, которую вы используете сейчас, со звездочкой для обозначения подстановочного знака после него.

В поле «Редирект с» введите старый путь к категориям с подстановочным знаком. А именно /oldslug/(.*)$. Запись для «Редирект на» должна принять форму /newslug/$1.

Так что если вы изменили структуру URL-адресов, используя обозначение blog, вместо category по умолчанию, вам нужно ввести /category/(.*)$ в качестве значения для поля «Редирект с» и /blog/$1 в качестве значения для поля «Редирект на».

Добавление группового перенаправления в MyKinsta

Если вы используете плагин Redirection, сначала вам нужно включить функции регулярных выражений.

Перейдите в раздел Инструменты> Redirection и выберите «Добавить новое».

Создание нового правила перенаправления с помощью плагина Redirection

Кликните по раскрывающемуся меню Параметры / Регулярное выражение и установите флажок «Регулярное выражение».

Настройка перенаправления с подстановочными знаками с помощью плагина Redirection

В поле «Исходный URL-адрес» введите старый путь к категориям со знаком подстановки. А именно /oldslug/(.*)$. Запись для поля «Целевой URL» должна принимать источник /newslug/$1. Это работает точно так же, как и в MyKinsta.

Устранение неполадок с постоянными ссылками в WordPress

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

Постоянные ссылки не работают после регистрации типа записей

Иногда вы регистрируете новый тип записей или таксономию, и ссылки на соответствующие страницы архива или на записи не работают.

Не паникуйте! Это происходит потому, что WordPress не знает, что пользовательский тип записи или таксономия означает изменение настроек постоянных ссылок. Просто перейдите в меню Настройки> Постоянные ссылки. Вам даже не придется вносить какие-либо изменения или нажимать кнопку «Сохранить изменения» — достаточно просто открыть эту панель.

Постоянные ссылки не ведут себя так, как вы хотите

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

  • Проверьте, правильно ли вы ввели URL-адрес в браузере.
  • Перейдите в меню Настройки> Постоянные ссылкии проверьте настройки. Верны ли теги? Убедитесь, что вы ничего не пропустили или не использовали неправильный синтаксис.
  • Очистите кеш сайта,если вы используете плагин кэширования. Кэширование может мешать изменениям ссылок.
  • Если вы изменили настройки постоянных ссылок, у вас могут быть ссылки в контенте сайта, которые уже устарели. Отредактируйте их или настройте необходимые перенаправления.
  • Проверьте, не изменили ли вы вручную слаг для каких-либо записей.
  • Проверьте, установлен ли у вас плагин перенаправления или плагин, который включает перенаправление. Если это так, проверьте, какие перенаправления вы добавили в настройки.
  • Если на вашем WordPress-сайте есть плагины, которые влияют на типы записей или ссылки, попробуйте отключить их и посмотреть, решит ли это возникшую проблему.
  • Если вы не можете получить доступ к панели настроек «Постоянные ссылки», используйте метод, описанный ранее, чтобы отредактировать постоянные ссылки с помощью phpMyAdmin.

Следуйте этим советам, и ваши постоянные ссылки в WordPress будут работать как надо.

Постоянные ссылки — это строительные блоки любого WordPress — сайта. Узнайте, что они собой представляют, как они работают и как их оптимизировать для улучшения SEO-трафика.

Заключение

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

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

Теперь ваша очередь: как вы управляете постоянными ссылками? Мы забыли рассказать что-нибудь о постоянных ссылках в WordPress? Расскажите нам об этом в комментариях к этой статье!

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

Данная публикация является переводом статьи «The Ultimate Guide to Using WordPress Permalinks» , подготовленная редакцией проекта.

Меню