WordPress как на ладони
wordpress jino

redirect_post_location хук-фильтр . WP 2.9

Фильтрует конечный адрес УРЛ, на который WP перенаправляет пользователя при сохранении, публикации или обновлении записи (поста).

Пример: при создании поста УРЛ имеет вид: /wp-admin/post-new.php. После того, как мы нажмем кнопку "Сохранить" или "Опубликовать" УРЛ станет: wp-admin/post.php?post=3061&action=edit&message=10. Именно этот новый УРЛ мы можем изменить, используя фильтр redirect_post_location.

Использование

function filter_function_name_11( $location, $post_id ) {
	// Фильтр...

	return $location;
}
add_filter( 'redirect_post_location', 'filter_function_name_11', 10, 2 );
$location(строка)
УРЛ на который будет перенаправлен пользователь.
$post_id(число)
ID поста, который обрабатывается в текущий момент.

Примеры

#1 Перенаправление на список записей при создании записи

Предположим, при создании или обновлении записи, нам нужно, чтобы пользователя перенаправило на страницу админ-панели со списком всех записей, а не на туже страницу редактирования записи. Для этого воспользуемся фильтром redirect_post_location и функцией admin_url():

/**
 * Перенаправить на edit.php при сохранении или публикации поста.
 */
function redirect_to_list_after_publish_post( $location ) {

	if ( isset( $_POST['save'] ) || isset( $_POST['publish'] ) )
		return admin_url( "edit.php" ); // ссылка будет такой: http://example.com/wp-admin/edit.php

	return $location;
}
add_filter( 'redirect_post_location', 'redirect_to_list_after_publish_post' );

Связи хука

Используется в: redirect_post()

Фрагменты кода хука redirect_post_location

Фрагмент из: wp-admin/includes/post.php WP 4.9
...
		$location = add_query_arg( 'message', 3, wp_get_referer() );
		$location = explode('#', $location);
		$location = $location[0] . '#postcustom';
	} else {
		$location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) );
	}

	/**
	 * Filters the post redirect destination URL.
	 *
	 * @since 2.9.0
	 *
	 * @param string $location The destination URL.
	 * @param int    $post_id  The post ID.
	 */
	wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) );
	exit;
}
redirect_post_location Комментариев нет

Здравствуйте, !

Ваш комментарий