add_rewrite_tag() WP 2.1.0

Додає/оновлює тег запиту (наприклад: %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

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *