WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как найти перенаправление в WordPress

Порой сложно отследить какой участок кода создаёт перенаправления в WordPress. Но если такие редиректы делаются функциями WordPress: wp_redirect() или wp_safe_redirect() - решение есть!

Ниже показано как без труда вылавливать редиректы.

При включенном дебаге, используем код:

add_filter( 'wp_redirect', 'wp_redirect_print_debug_backtrace' );

function wp_redirect_print_debug_backtrace( $location ) {

	error_log( print_r( debug_backtrace( true ), true ) );

	// или
	/*
	ob_start();
	debug_print_backtrace();
	$log = ob_get_clean();
	error_log( $log );
	*/

	return $location;
}

Ознакомьтесь с возможностями функции debug_backtrace, чтобы изменить полноту предоставляемых данных.

Также можно использовать функцию debug_print_backtrace(), но она сразу выводит данные на экран, поэтому их надо «буферить», чтобы передать в error_log().

Теперь попробуем, например, посетить страницу example.com/login/, с которой движок перенаправит нас на страницу example.com/wp-login.php. В логе мы получим следующую информацию:

Array
(
	[0] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php
			[line] => 289
			[function] => wp_redirect_print_debug_backtrace
			[args] => Array
				(
					[0] => https://wp-test.ru/wp-login.php
				)

		)

	[1] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\plugin.php
			[line] => 206
			[function] => apply_filters
			[class] => WP_Hook
			[type] => ->
			[args] => Array
				(
					[0] => https://wp-test.ru/wp-login.php
					[1] => Array
						(
							[0] => https://wp-test.ru/wp-login.php
							[1] => 302
						)

				)

		)

	[2] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\pluggable.php
			[line] => 1257
			[function] => apply_filters
			[args] => Array
				(
					[0] => wp_redirect
					[1] => https://wp-test.ru/wp-login.php
					[2] => 302
				)

		)

	[3] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\canonical.php
			[line] => 971
			[function] => wp_redirect
			[args] => Array
				(
					[0] => https://wp-test.ru/wp-login.php
				)

		)

	[4] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php
			[line] => 287
			[function] => wp_redirect_admin_locations
			[args] => Array
				(
					[0] => 
				)

		)

	[5] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php
			[line] => 311
			[function] => apply_filters
			[class] => WP_Hook
			[type] => ->
			[args] => Array
				(
					[0] => 
					[1] => Array
						(
							[0] => 
						)

				)

		)

	[6] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\plugin.php
			[line] => 478
			[function] => do_action
			[class] => WP_Hook
			[type] => ->
			[args] => Array
				(
					[0] => Array
						(
							[0] => 
						)

				)

		)

	[7] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-includes\template-loader.php
			[line] => 13
			[function] => do_action
			[args] => Array
				(
					[0] => template_redirect
				)

		)

	[8] => Array
		(
			[file] => F:\server\www\wp-test.ru\wp-blog-header.php
			[line] => 19
			[args] => Array
				(
					[0] => F:\server\www\wp-test.ru\wp-includes\template-loader.php
				)

			[function] => require_once
		)

	[9] => Array
		(
			[file] => F:\server\www\wp-test.ru\index.php
			[line] => 17
			[args] => Array
				(
					[0] => F:\server\www\wp-test.ru\wp-blog-header.php
				)

			[function] => require
		)

)

Благодаря этой отладочной информации, мы определили, что за перенаправление ответствен хук:

add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

Он навешивается в файле default-filters.php и запускает функцию wp_redirect_admin_locations(), которая и создает само перенаправление.

Эта заметка встроена в: wp_redirect
campusboy 3611youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7835
Комментариев нет