Функция add_permastruct()
в WordPress позволяет добавить структуру постоянных ссылок (пермаструктуру) для пользовательских типов записей. Это позволяет вам управлять тем, как будут выглядеть URL ваших страниц и записей, что важно для SEO и удобства пользователей.
add_permastruct( string $name, string $struct, array $args = array() )
Параметры:
- $name (string, обязательный): Название для структуры постоянных ссылок.
- $struct (string, обязательный): Структура постоянных ссылок.
- $args (array, необязательный): Параметры для создания правил из структуры постоянных ссылок.
Как это работает
Функция add_permastruct()
создает несколько правил перезаписи на основе заданной пермаструктуры. Эти правила позволяют преобразовать URL в внутренние параметры запроса. Например, если у вас есть структура /items/%item_slug%
, вы можете изменить её на /products/%product_id%
.
Пример 1: Структура ЧПУ для произвольного типа записи
Допустим, вы создаете пользовательский тип записи «книга» и хотите настроить для него структуру URL. Вот как это можно сделать:
add_action('init', function() {
$post_type = 'book';
$permastruct = "$post_type/%book_slug%"; // структура ЧПУ
$args = [
'with_front' => true,
'paged' => true,
'ep_mask' => EP_NONE,
'feed' => false,
'forcomments' => false,
'walk_dirs' => false,
'endpoints' => false,
];
add_permastruct($post_type, $permastruct, $args);
// Добавляем тег перезаписи для замены %book_slug%
add_rewrite_tag("%book_slug%", '([^/]+)', "post_type=$post_type&name=");
});
После добавления этого кода, структура URL для записей типа «книга» будет выглядеть как example.com/book/my-book-slug
.
Пример 2: Настройка пермаструктуры для страницы плагина
Предположим, вы хотите создать страницу для вашего плагина и настроить для неё структуру постоянных ссылок. Можно сделать это следующим образом:
add_action('init', function() {
$page_slug = 'plugin-page';
$permastruct = "pages/%plugin_slug%"; // структура ЧПУ
$args = [
'with_front' => true,
'ep_mask' => EP_ROOT,
'paged' => false,
'feed' => false,
'forcomments' => false,
'walk_dirs' => false,
'endpoints' => false,
];
add_permastruct($page_slug, $permastruct, $args);
add_rewrite_tag("%plugin_slug%", '([^/]+)', "page_id=");
});
Теперь, если вы зайдете на example.com/pages/my-plugin-page
, будет загружаться соответствующая страница плагина.
Важные моменты
- Сброс правил перезаписи: После добавления новой пермаструктуры всегда необходимо сбросить правила перезаписи. Это можно сделать, зайдя в админку WordPress в раздел «Настройки» → «Постоянные ссылки» и нажав «Сохранить изменения», или вызвав функцию
flush_rewrite_rules()
в коде. - Использование в хуках: Функция
add_permastruct()
должна вызываться в хукеinit
, чтобы гарантировать, что она выполнится при инициализации WordPress.
Заключение
Функция add_permastruct()
предоставляет мощный инструмент для настройки структуры URL в WordPress. Используя её, вы можете создать понятные и удобные ссылки для своих пользовательских типов записей и страниц плагинов, что улучшит опыт пользователей и SEO вашего сайта.