Хук redirect_post_location
в WordPress позволяет изменить конечный URL, на который перенаправляется пользователь после сохранения, публикации или обновления записи. Этот хук предоставляет возможность кастомизировать поведение админ-панели, улучшая пользовательский опыт.
apply_filters( ‘redirect_post_location’, string $location, int $post_id )
Параметры
- $location (string): URL, на который будет перенаправлен пользователь.
- $post_id (int): ID поста, который в данный момент обрабатывается.
Пример работы хука
Когда вы создаете новый пост, URL может выглядеть как /wp-admin/post-new.php
. После нажатия кнопки «Сохранить» или «Опубликовать» URL изменится на что-то вроде wp-admin/post.php?post=3061&action=edit&message=10
. Хук redirect_post_location
позволяет изменить этот новый URL перед перенаправлением.
Использование
Для применения фильтра redirect_post_location
, вы можете использовать следующий шаблон:
function custom_redirect_post_location( $location, $post_id ) {
// Ваши изменения...
return $location;
}
add_filter( 'redirect_post_location', 'custom_redirect_post_location', 10, 2 );
Пример 1: Перенаправление на список записей при создании поста
Предположим, вы хотите перенаправить пользователя на страницу админ-панели со списком всех записей после создания или обновления записи, а не оставлять его на странице редактирования. Вот как это можно сделать с помощью фильтра redirect_post_location
и функции admin_url()
:
/**
* Перенаправить на edit.php при сохранении или публикации поста.
*/
function redirect_to_post_list_after_save( $location, $post_id ) {
// Проверяем, была ли нажата кнопка "Сохранить" или "Опубликовать".
if ( isset( $_POST['save'] ) || isset( $_POST['publish'] ) ) {
return admin_url( "edit.php" ); // Перенаправление на список постов.
}
return $location; // Возвращаем исходный URL, если условия не выполнены.
}
add_filter( 'redirect_post_location', 'redirect_to_post_list_after_save', 10, 2 );
В этом примере, если пользователь нажимает на кнопку «Сохранить» или «Опубликовать», он будет перенаправлен на страницу со списком всех записей (URL будет выглядеть как http://example.com/wp-admin/edit.php
).
Пример 2: Добавление уведомления при обновлении поста
В этом примере мы изменим URL так, чтобы он содержал уведомление об успешном обновлении поста:
/**
* Добавить уведомление об успешном обновлении поста.
*/
function add_success_message_after_update( $location, $post_id ) {
// Добавляем параметр в URL с уведомлением.
return add_query_arg( 'message', 'post_updated', $location );
}
add_filter( 'redirect_post_location', 'add_success_message_after_update', 10, 2 );
Теперь после обновления поста URL будет содержать параметр message=post_updated
, который можно использовать для отображения соответствующего уведомления.
Пример 3: Перенаправление на страницу просмотра поста
Если вы хотите перенаправить пользователя на страницу просмотра поста после его публикации, вы можете использовать следующий код:
/**
* Перенаправить на страницу просмотра поста после его публикации.
*/
function redirect_to_view_post_after_publish( $location, $post_id ) {
// Проверяем, была ли нажата кнопка "Опубликовать".
if ( isset( $_POST['publish'] ) ) {
return get_permalink( $post_id ); // Перенаправление на страницу просмотра.
}
return $location; // Возвращаем исходный URL, если условия не выполнены.
}
add_filter( 'redirect_post_location', 'redirect_to_view_post_after_publish', 10, 2 );
Теперь, когда пользователь публикует пост, он будет перенаправлен непосредственно на страницу просмотра этого поста.
Заключение
Хук redirect_post_location
— это полезный инструмент для разработчиков WordPress, который позволяет настроить процесс перенаправления пользователей после сохранения или обновления контента. С помощью этого хука вы можете улучшить пользовательский опыт, адаптируя админ-панель под конкретные требования вашего проекта.