add_rewrite_tag()
Додає/оновлює тег запиту (наприклад: %pagetype% ), який можна використовувати в ЧПУ. Цей тег буде замінено на регулярне вираз, а потім на конструкцію запиту виду: ?pagetype=mypage
.
Зазвичай, ця функція використовується у зв’язці з add_rewrite_rule() , яка створює нове правило перезапису для ЧПУ. Часто використовується WordPress для постійних сторінок з окремим шаблоном.
Якщо реєструється змінна запиту, яка вже існує у WordPress, колишня змінна буде перезаписана.
Важливо: функцію потрібно викликати пізніше події init .
Дивіться список зайнятих назв для змінних запитів.
WP_Rewrite()
Хуків немає.
Повертає
null
. Нічого не вертає.
Використання
add_rewrite_tag ($ tagname, $ regex);
-
$tagname
(рядок) (обов’язковий) -
Назва змінної, яка буде використана як змінна запит. Назву потрібно обернути в
%
. Наприклад,
pagetype
вказується як
%pagetype%
. -
$regex
(рядок) (обов’язковий) -
Частина регулярного виразу, якому має відповідати значення
$tagname . Вираз обертається дужками. Наприклад, якщо змінна запиту:
?pagetype=pages
, потрібно регулярно описати
pages :
([^&]+)
-
$query
(рядок) -
Рядок запиту, який буде додано в кінці запиту, повинен закінчуватися на
=
. Наприклад:
post_type=book&name=
. В результаті, у правилі перезапису, після
= буде встановлено
match елемент, що відповідає параметру
$regex (наприклад
$matches[1] )
За замовчуванням: ”
Приклади
#1 Реєстрація нової змінної запиту WP
Цей приклад зареєструє тег запиту pagetype
:
add_action('init', 'rewrite_rule_my'); function rewrite_rule_my(){ add_rewrite_tag( '%pagetype%', '([^&]+)' ); }
Процедура потрібна, коли створюється правило перезапису функцією add_rewrite_rule() . Зазвичай, таке правило створюється для постійних сторінок з унікальним шаблоном.
Набуття значень
Значення змінних запиту з перезаписаних УЛР виходить через $wp_query
.
Наприклад, у нас було посилання sitemap?pagetype=pages
ми вказали правило перезапису і посилання перетворилося на sitemap/pages
, тепер щоб правильно отримати значення pages
для використання в PHP і бути впевненим, що воно відноситься саме до змінної запиту pagetype
, в шаблоні використовуємо:
get_query_var('pagetype');
або
global $wp_query; $wp_query->query_vars['pagetype'];
Отримати $_GET параметр, коли використовується ЧПУ неможливо. Тобто. коли /sitemap/pages
$_GET['pagetype']
буде порожня.
нотатки
- Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.
- Global. WP. $wp Current WordPress environment instance.
список змін
З версії 2.1.0 | Введено. |
Код add_rewrite_tag() add rewrite tag WP 6.0.2
function add_rewrite_tag( $tag, $regex, $query = '') { // Validate the tag's name. if ( strlen( $tag ) < 3 || '%' !== $tag[0] || '%' !== $tag[ strlen( $tag ) - 1 ] ) { return; } Global $wp_rewrite, $wp; if (empty($query)) { $ qv = trim ($ tag, '%'); $wp->add_query_var( $qv ); $query = $qv. '='; } $wp_rewrite->add_rewrite_tag($tag, $regex, $query); }