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);
}