add_rewrite_endpoint()

Добавляет конечную точку, например, /trackback/
Функция WordPress
INT 2.1.0
WordPress Icon

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

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

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

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

add_rewrite_endpoint( string $name, int $places, string|bool $query_var = true )

Функция add_rewrite_endpoint() принимает три параметра:

  • $name (обязательный) — Название конечной точки.
  • $places (обязательный) — Маска конечной точки, описывающая места, куда должна быть добавлена конечная точка. Принимает одну из следующих масок: 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.
  • $query_var (необязательный) — Название соответствующей переменной запроса. Передайте значение false, чтобы пропустить регистрацию переменной запроса для этой конечной точки. По умолчанию равно значению параметра $name.

/**
 * Добавление конечной точки "trackback" для записей.
 * Конечная точка будет добавлена к архивам записей, страницам и единичным записям.
 * Соответствующая переменная запроса будет названа "trackback".
 */
add_rewrite_endpoint( 'trackback', EP_ALL_ARCHIVES | EP_PAGES | EP_PERMALINK, 'trackback' );

В этом примере мы добавляем конечную точку «trackback» для записей. Конечная точка будет добавлена к архивам записей, страницам и единичным записям. Соответствующая переменная запроса будет названа «trackback».

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

Добавление подраздела для отслеживания постов


add_rewrite_endpoint( 'trackback', EP_PERMALINK );

Этот пример кода добавляет подраздел «trackback» для отслеживания постов. В параметре $name указывается имя подраздела, в данном случае — «trackback». В параметре $places указывается маска мест, в которых должен быть добавлен подраздел. В данном примере используется константа EP_PERMALINK, которая указывает, что подраздел должен быть добавлен во всех местах, где используется постоянная ссылка.

Создание подраздела для работы с вложениями


add_rewrite_endpoint( 'attachment', EP_ATTACHMENT );

Этот пример кода добавляет подраздел «attachment» для работы с вложениями. В параметре $name указывается имя подраздела, в данном случае — «attachment». В параметре $places указывается маска мест, в которых должен быть добавлен подраздел. В данном примере используется константа EP_ATTACHMENT, которая указывает, что подраздел должен быть добавлен только для вложений.

Установка подраздела для авторов


add_rewrite_endpoint( 'author', EP_AUTHORS );

Этот пример кода добавляет подраздел «author» для работы с авторами. В параметре $name указывается имя подраздела, в данном случае — «author». В параметре $places указывается маска мест, в которых должен быть добавлен подраздел. В данном примере используется константа EP_AUTHORS, которая указывает, что подраздел должен быть добавлен только для авторов.

Добавление подраздела для категорий


add_rewrite_endpoint( 'category', EP_CATEGORIES );

Этот пример кода добавляет подраздел «category» для работы с категориями. В параметре $name указывается имя подраздела, в данном случае — «category». В параметре $places указывается маска мест, в которых должен быть добавлен подраздел. В данном примере используется константа EP_CATEGORIES, которая указывает, что подраздел должен быть добавлен только для категорий.

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


add_rewrite_endpoint( 'comment', EP_COMMENTS );

Этот пример кода добавляет подраздел «comment» для работы с комментариями. В параметре $name указывается имя подраздела, в данном случае — «comment». В параметре $places указывается маска мест, в которых должен быть добавлен подраздел. В данном примере используется константа EP_COMMENTS, которая указывает, что подраздел должен быть добавлен только для комментариев.

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

Как добавить новый эндпоинт с помощью функции add_rewrite_endpoint()?

Для добавления нового эндпоинта в WordPress можно воспользоваться функцией add_rewrite_endpoint(). Она принимает два обязательных параметра: $name — имя эндпоинта, и $places — маску мест, в которых будет добавлен эндпоинт.

add_rewrite_endpoint( $name, $places );

Например, чтобы добавить эндпоинт с именем «trackback» во всех местах, можно использовать следующий код:

add_rewrite_endpoint( 'trackback', EP_ALL );

Как изменить маску мест, в которых будет добавлен эндпоинт?

Маска мест определяет, в каких частях WordPress будет добавлен эндпоинт. В функции add_rewrite_endpoint() можно использовать следующие значения для параметра $places:

  • 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 — добавить эндпоинт в годы

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

add_rewrite_endpoint( 'my-endpoint', EP_ALL_ARCHIVES | EP_PERMALINK );

Как изменить имя соответствующей переменной запроса для эндпоинта?

По умолчанию, имя переменной запроса для эндпоинта будет таким же, как и имя самого эндпоинта. С помощью параметра $query_var функции add_rewrite_endpoint() можно изменить это имя.

Например, чтобы изменить имя переменной запроса для эндпоинта «trackback» на «tb», можно использовать следующий код:

add_rewrite_endpoint( 'trackback', EP_ALL, 'tb' );

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

Например, чтобы добавить эндпоинт «my-endpoint» без соответствующей переменной запроса, можно использовать следующий код:

add_rewrite_endpoint( 'my-endpoint', EP_ALL, false );

Можно ли не регистрировать переменную запроса для эндпоинта?

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

Как удалить эндпоинт, добавленный с помощью функции add_rewrite_endpoint()?

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


remove_rewrite_endpoint( $name );

Как проверить, существует ли уже эндпоинт с определенным именем?

Для проверки существования эндпоинта с определенным именем можно использовать функцию get_query_var(). Она возвращает значение переменной запроса для указанного эндпоинта. Если эндпоинт с указанным именем существует, функция вернет его значение, в противном случае вернется false.


if ( get_query_var( $name ) ) {
    // Эндпоинт существует
} else {
    // Эндпоинт не существует
}

Как получить URL для определенного эндпоинта?

Для получения URL для определенного эндпоинта в WordPress можно использовать функцию get_permalink(). Эта функция принимает один обязательный параметр — идентификатор поста или объект типа WP_Post, и возвращает URL этого поста с добавленным эндпоинтом.


$endpoint_url = get_permalink( $post_id );

Как изменить URL структуру для эндпоинта?

Для изменения URL структуры для эндпоинта в WordPress можно использовать функцию add_rewrite_rule(). Эта функция позволяет добавить правило перезаписи для определенного эндпоинта.


function custom_rewrite_rule() {
    add_rewrite_rule( '^trackback/(.*)/?$', 'index.php?trackback=$matches[1]', 'top' );
}
add_action( 'init', 'custom_rewrite_rule' );

Как использовать эндпоинт в шаблонах WordPress?

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


$trackback = get_query_var( 'trackback' );
if ( $trackback ) {
    // Ваш код для обработки эндпоинта trackback
}

Функция add_rewrite_endpoint() в WordPress позволяет добавить эндпоинт, который будет добавлен к URL вашего сайта. Это полезно, когда вам нужно добавить дополнительные возможности или функциональность к определенным страницам или постам. Используя функции get_permalink(), add_rewrite_rule() и get_query_var(), вы можете получить URL для эндпоинта, изменить его структуру и использовать его в шаблонах WordPress. Это отличный способ расширить возможности вашего сайта и создать более гибкую и удобную пользовательскую среду.

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

  • Функция add_rewrite_rule(): добавляет правило перезаписи URL.
  • Функция add_rewrite_tag(): добавляет новый тег для использования в правилах перезаписи.
  • Функция flush_rewrite_rules(): сбрасывает правила перезаписи и обновляет файл .htaccess.
  • Хук rewrite_rules_array: позволяет изменять массив правил перезаписи перед его обработкой.
  • Хук generate_rewrite_rules: позволяет добавлять дополнительные правила перезаписи.
  • Хук query_vars: позволяет добавлять дополнительные переменные запроса.
  • Хук request: позволяет изменять запрос перед его обработкой.
  • Хук template_redirect: позволяет перенаправлять запросы на другие страницы.
  • Хук parse_request: позволяет изменять запрос перед его обработкой.
  • Класс WP_Rewrite: предоставляет методы для работы с правилами перезаписи URL.
Обсуждение