add_permastruct()

Добавляет структуру постоянных ссылок
Функция WordPress
INT 3.0.0
WordPress Icon

Описание функции

Функция add_permastruct() добавляет структуру постоянных ссылок.

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

Функция add_permastruct() используется внутри класса WP_Rewrite, который отвечает за обработку и генерацию URL-адресов в WordPress.

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

add_permastruct( string $name, string $struct, array $args = array() )

Эта функция принимает три параметра: $name, $struct и $args.

$name (обязательный) — название для структуры постоянных ссылок.

$struct (обязательный) — структура постоянных ссылок. Это строка, которая определяет формат URL-адресов.

$args (необязательный) — аргументы для построения правил на основе структуры постоянных ссылок. Подробности можно найти в документации к методу WP_Rewrite::add_permastruct().

  • $name (string) — Обязательный. Название для структуры постоянных ссылок.
  • $struct (string) — Обязательный. Структура постоянных ссылок. Это строка, которая определяет формат URL-адресов.
  • $args (array) — Необязательный. Аргументы для построения правил на основе структуры постоянных ссылок.
    • with_front (bool) — Определяет, должна ли структура быть добавлена перед WP_Rewrite::$front. По умолчанию true.
    • ep_mask (int) — Маска конечных точек, определяющая, какие конечные точки добавляются в структуру. Принимает одну из следующих масок: EP_ALL, EP_NONE, EP_ALL_ARCHIVES, EP_ATTACHMENT, EP_AUTHORS, EP_CATEGORIES, EP_COMMENTS, EP_DATE, EP_DAY, EP_MONTH, EP_PAGES, EP_PERMALINK, EP_ROOT, EP_SEARCH, EP_TAGS, EP_YEAR. По умолчанию EP_NONE.
    • paged (bool) — Определяет, должны ли быть добавлены правила пагинации для архивов. По умолчанию true.
    • feed (bool) — Определяет, должны ли быть добавлены правила для обработки лент. По умолчанию true.
    • forcomments (bool) — Определяет, должны ли правила лент быть запросом для ленты комментариев. По умолчанию false.
    • walk_dirs (bool) — Определяет, должны ли «каталоги», составляющие структуру, быть просмотрены, и для каждого из них построены правила. По умолчанию true.
    • endpoints (bool) — Определяет, должны ли конечные точки быть применены к сгенерированным правилам. По умолчанию true.
    • default (array) — Массив значений по умолчанию для аргументов. По умолчанию array().
<?php
add_permastruct( 'category', '/%category%/%postname%/', array(
  'with_front' => false,
  'paged' => true,
  'feed' => true,
  'forcomments' => false,
  'walk_dirs' => true,
  'endpoints' => true,
  'default' => array(),
) );
?>

В этом примере мы добавляем пользовательскую структуру постоянных ссылок для категорий. Структура URL-адресов будет иметь формат /категория/заголовок-поста/. Мы также указываем некоторые дополнительные аргументы, такие как отключение добавления WP_Rewrite::$front перед структурой, добавление правил пагинации и правил для обработки лент.

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

Создание пользовательской структуры ссылок


add_action( 'init', 'custom_permalink_structure' );
function custom_permalink_structure() {
    add_permastruct( 'custom', '/%postname%/' );
}

В этом примере мы создаем пользовательскую структуру ссылок с помощью функции add_permastruct(). Мы используем хук ‘init’, чтобы вызвать функцию custom_permalink_structure() при инициализации WordPress. Внутри функции мы вызываем add_permastruct() с двумя обязательными параметрами: имя структуры ссылок (‘custom’) и саму структуру ссылок (‘/%postname%/’).

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


add_action( 'init', 'custom_category_permalink_structure' );
function custom_category_permalink_structure() {
    add_permastruct( 'category', '/news/%category%/' );
}

В этом примере мы изменяем структуру ссылок для категорий. Мы используем хук ‘init’, чтобы вызвать функцию custom_category_permalink_structure() при инициализации WordPress. Внутри функции мы вызываем add_permastruct() с двумя обязательными параметрами: имя структуры ссылок (‘category’) и новую структуру ссылок (‘/news/%category%/’). Теперь ссылки на категории будут иметь вид ‘/news/category-name/’.

Добавление пагинации к пользовательской структуре ссылок


add_action( 'init', 'custom_pagination_permalink_structure' );
function custom_pagination_permalink_structure() {
    add_permastruct( 'custom', '/%postname%/%paged%/' );
}

В этом примере мы добавляем пагинацию к пользовательской структуре ссылок. Мы используем хук ‘init’, чтобы вызвать функцию custom_pagination_permalink_structure() при инициализации WordPress. Внутри функции мы вызываем add_permastruct() с двумя обязательными параметрами: имя структуры ссылок (‘custom’) и новую структуру ссылок (‘/%postname%/%paged%/’). Теперь ссылки на посты будут иметь вид ‘/post-name/page/2/’ при пагинации.

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


add_action( 'init', 'custom_post_type_permalink_structure' );
function custom_post_type_permalink_structure() {
    add_permastruct( 'custom', '/%postname%/', array( 'with_front' => false, 'ep_mask' => EP_PERMALINK ) );
}

В этом примере мы настраиваем структуру ссылок для постов определенного типа. Мы используем хук ‘init’, чтобы вызвать функцию custom_post_type_permalink_structure() при инициализации WordPress. Внутри функции мы вызываем add_permastruct() с тремя параметрами: имя структуры ссылок (‘custom’), новую структуру ссылок (‘/%postname%/’) и массив аргументов для настройки структуры ссылок. В данном случае мы устанавливаем параметры ‘with_front’ в значение false и ‘ep_mask’ в значение EP_PERMALINK. Теперь ссылки на посты данного типа будут иметь вид ‘/post-name/’ без префикса и с использованием только пермалинка.

Добавление конечных точек к пользовательской структуре ссылок


add_action( 'init', 'custom_endpoints_permalink_structure' );
function custom_endpoints_permalink_structure() {
    add_permastruct( 'custom', '/%postname%/%custom_endpoint%/' );
}

В этом примере мы добавляем конечные точки к пользовательской структуре ссылок. Мы используем хук ‘init’, чтобы вызвать функцию custom_endpoints_permalink_structure() при инициализации WordPress. Внутри функции мы вызываем add_permastruct() с двумя обязательными параметрами: имя структуры ссылок (‘custom’) и новую структуру ссылок (‘/%postname%/%custom_endpoint%/’). Теперь ссылки на посты будут иметь вид ‘/post-name/endpoint/’ при использовании конечных точек.

Вопросы и ответы

Функция add_permastruct() в WordPress используется для добавления пользовательской структуры permalink.

Чтобы добавить кастомную permalink структуру, вы должны вызвать функцию add_permastruct() и передать ей следующие параметры:

  • $name (обязательный): Название для permalink структуры.
  • $struct (обязательный): Структура permalink.
  • $args (необязательный): Аргументы для построения правил на основе permalink структуры.

Пример кода:


add_permastruct( 'custom', '/%category%/%postname%/' );

Для изменения существующей permalink структуры в WordPress, вы должны использовать функцию add_permastruct() с тем же названием permalink структуры, но с новой структурой.

Пример кода:


add_permastruct( 'custom', '/%year%/%monthnum%/%postname%/' );

Для удаления permalink структуры в WordPress, вы должны вызвать функцию add_permastruct() с пустой структурой permalink.

Пример кода:


add_permastruct( 'custom', '' );

Функция add_permastruct() позволяет добавить пользовательскую структуру permalink в WordPress. Для этого необходимо указать имя структуры и саму структуру в виде строки. Также можно использовать переменные в permalink структуре, чтобы динамически формировать ссылки.

Переменные в permalink структуре заключаются в фигурные скобки {} и могут быть различных типов, например:

  • %postname% — переменная, которая будет заменена на слаг поста (название поста в URL)
  • %category% — переменная, которая будет заменена на слаг категории (название категории в URL)
  • %year% — переменная, которая будет заменена на год публикации поста

Пример использования переменных в permalink структуре:


add_permastruct( 'custom', '/%category%/%postname%/%year%/', array(
  'with_front' => false,
) );

Пагинация для permalink структуры может быть настроена с помощью параметра paged при вызове функции add_permastruct(). По умолчанию пагинация включена.

Пример настройки пагинации для permalink структуры:


add_permastruct( 'custom', '/%category%/%postname%/%year%/', array(
  'paged' => false,
) );

Эндпоинты — это дополнительные части URL, которые могут быть добавлены к permalink структуре. Для добавления эндпоинтов в permalink структуру используется параметр endpoints при вызове функции add_permastruct(). По умолчанию эндпоинты включены.

Пример добавления эндпоинтов в permalink структуру:


add_permastruct( 'custom', '/%category%/%postname%/%year%/', array(
  'endpoints' => true,
) );

Для настройки permalink структуры для категорий используется переменная %category% в permalink структуре. При этом можно указать, что категории будут включены в URL с помощью параметра with_front при вызове функции add_permastruct(). По умолчанию категории включены.

Пример настройки permalink структуры для категорий:


add_permastruct( 'custom', '/%category%/%postname%/%year%/', array(
  'with_front' => true,
) );

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

Связанные элементы

  • Функция add_rewrite_rule(): добавляет правило перезаписи.
  • Функция add_rewrite_tag(): добавляет пользовательскую метку для использования в правилах перезаписи.
  • Функция flush_rewrite_rules(): сбрасывает правила перезаписи и вызывает их перегенерацию.
  • Функция add_rewrite_endpoint(): добавляет конечную точку (endpoint) для правил перезаписи.
  • Хук rewrite_rules_array: позволяет изменять массив правил перезаписи перед его использованием.
  • Класс WP_Rewrite: обеспечивает генерацию и обработку правил перезаписи.
Обсуждение