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])
По умолчанию: ''

Примеры

2

#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.7.1

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 );
}
  • Эркисс

    порно любительское камеру пары эркисс

    erkiss.live

2 комментария
    Войти