wp_redirect

Позволяет изменить цель перенаправления
Хук WordPress
INT 2.1.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Перенаправление на главную страницу сайта
  4. Перенаправление на страницу регистрации
  5. Перенаправление на внешний URL
  6. Перенаправление на страницу ошибки 404
  7. Перенаправление после отправки формы
  8. Вопросы и ответы
  9. Как изменить путь или URL для перенаправления с помощью хука wp_redirect?
  10. Как изменить HTTP-статус код для перенаправления с помощью хука wp_redirect?
  11. Как проверить, было ли уже выполнено перенаправление с помощью хука wp_redirect?
  12. Как отключить или отменить перенаправление с помощью хука wp_redirect?
  13. Как использовать хук wp_redirect для перенаправления только для определенных пользователей или ролей?
  14. Как использовать хук wp_redirect для перенаправления на другой домен или поддомен?
  15. Как использовать хук wp_redirect для перенаправления на страницу после успешной аутентификации?
  16. Как использовать хук wp_redirect для перенаправления на страницу после отправки формы?
  17. Связанные элементы

Описание хука

Хук «wp_redirect» позволяет изменить место перенаправления пользователя.

Функция wp_redirect() используется для перенаправления пользователя на другую страницу или URL. Хук «wp_redirect» позволяет определить новое место перенаправления или изменить существующее.

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

apply_filters( 'wp_redirect', string $location, int $status )

Хук «wp_redirect» вызывается с помощью функции apply_filters(). Он принимает два параметра:

  • $location (строка) — путь или URL для перенаправления.
  • $status (целое число) — код HTTP-ответа для использования.
  • $location (строка) — путь или URL для перенаправления.
  • $status (целое число) — код HTTP-ответа для использования.
<?php
/**
 * Пример использования хука "wp_redirect"
 *
 * @param string $location Путь или URL для перенаправления.
 * @param int    $status   Код HTTP-ответа для использования.
 * @return string Новый путь или URL для перенаправления.
 */
function custom_wp_redirect( $location, $status ) {
    // Изменяем путь или URL для перенаправления
    $new_location = $location . '?param=value';
    // Возвращаем новый путь или URL для перенаправления
    return $new_location;
}
add_filter( 'wp_redirect', 'custom_wp_redirect', 10, 2 );

В приведенном примере кода мы создаем функцию «custom_wp_redirect», которая принимает два параметра: $location и $status. Внутри функции мы изменяем путь или URL для перенаправления, добавляя параметр «?param=value». Затем мы возвращаем новый путь или URL для перенаправления.

С помощью функции add_filter() мы добавляем нашу функцию «custom_wp_redirect» в хук «wp_redirect» с приоритетом 10 и количеством аргументов 2.

Примеры использования

Перенаправление на главную страницу сайта


function custom_redirect_home() {
    wp_redirect( home_url() );
    exit;
}
add_action( 'wp_loaded', 'custom_redirect_home' );

В данном примере кода используется хук ‘wp_loaded’, который вызывается после загрузки ядра WordPress. Функция ‘custom_redirect_home’ перенаправляет пользователя на главную страницу сайта с помощью функции ‘wp_redirect’ и завершает выполнение скрипта с помощью ‘exit’.

Перенаправление на страницу регистрации


function custom_redirect_registration() {
    wp_redirect( wp_registration_url() );
    exit;
}
add_action( 'wp_loaded', 'custom_redirect_registration' );

В данном примере кода используется хук ‘wp_loaded’ и функция ‘wp_registration_url’, которая возвращает URL страницы регистрации WordPress. Функция ‘custom_redirect_registration’ перенаправляет пользователя на страницу регистрации с помощью функции ‘wp_redirect’ и завершает выполнение скрипта с помощью ‘exit’.

Перенаправление на внешний URL


function custom_redirect_external() {
    wp_redirect( 'https://example.com' );
    exit;
}
add_action( 'wp_loaded', 'custom_redirect_external' );

В данном примере кода функция ‘custom_redirect_external’ перенаправляет пользователя на внешний URL ‘https://example.com’ с помощью функции ‘wp_redirect’ и завершает выполнение скрипта с помощью ‘exit’.

Перенаправление на страницу ошибки 404


function custom_redirect_404() {
    global $wp_query;
    $wp_query->set_404();
    status_header( 404 );
    get_template_part( 404 );
    exit;
}
add_action( 'wp_loaded', 'custom_redirect_404' );

В данном примере кода функция ‘custom_redirect_404’ устанавливает статус 404 для текущего запроса с помощью метода ‘set_404’ объекта $wp_query. Затем устанавливается заголовок статуса 404 с помощью функции ‘status_header’. Далее вызывается шаблон ‘404’ с помощью функции ‘get_template_part’ и завершается выполнение скрипта с помощью ‘exit’.

Перенаправление после отправки формы


function custom_redirect_after_form_submission() {
    if ( isset( $_POST['submit'] ) ) {
        wp_redirect( home_url( '/thank-you' ) );
        exit;
    }
}
add_action( 'template_redirect', 'custom_redirect_after_form_submission' );

В данном примере кода функция ‘custom_redirect_after_form_submission’ проверяет, была ли отправлена форма, путем проверки наличия значения ‘submit’ в массиве $_POST. Если форма была отправлена, то пользователь перенаправляется на страницу ‘/thank-you’ с помощью функции ‘wp_redirect’ и завершает выполнение скрипта с помощью ‘exit’. Этот пример использует хук ‘template_redirect’, который вызывается перед выводом шаблона страницы.

Вопросы и ответы

Как изменить путь или URL для перенаправления с помощью хука wp_redirect?

Для изменения пути или URL для перенаправления с помощью хука wp_redirect, вы можете использовать фильтр ‘wp_redirect’. Этот фильтр позволяет вам изменить значение переменной $location, которая содержит путь или URL для перенаправления.

// Пример использования фильтра 'wp_redirect'
add_filter( 'wp_redirect', 'custom_wp_redirect', 10, 2 );
function custom_wp_redirect( $location, $status ) {
    // Изменяем путь или URL для перенаправления
    $new_location = 'https://example.com/new-location';
    return $new_location;
}

Как изменить HTTP-статус код для перенаправления с помощью хука wp_redirect?

Для изменения HTTP-статус кода для перенаправления с помощью хука wp_redirect, вы можете изменить значение переменной $status, которая содержит код состояния HTTP.

// Пример использования фильтра 'wp_redirect'
add_filter( 'wp_redirect', 'custom_wp_redirect', 10, 2 );
function custom_wp_redirect( $location, $status ) {
    // Изменяем HTTP-статус код для перенаправления
    $new_status = 301;
    return $location;
}

Как проверить, было ли уже выполнено перенаправление с помощью хука wp_redirect?

Для проверки, было ли уже выполнено перенаправление с помощью хука wp_redirect, вы можете использовать функцию wp_redirect(). Если перенаправление уже выполнено, эта функция вернет true, в противном случае — false.

// Пример проверки выполнения перенаправления
if ( wp_redirect() ) {
    // Перенаправление уже выполнено
} else {
    // Перенаправление еще не выполнено
}

Как отключить или отменить перенаправление с помощью хука wp_redirect?

Для отключения или отмены перенаправления с помощью хука wp_redirect, вы можете использовать фильтр ‘wp_redirect’. Верните пустую строку или false в фильтре, чтобы отменить перенаправление.

// Пример отмены перенаправления
add_filter( 'wp_redirect', 'cancel_wp_redirect', 10, 2 );
function cancel_wp_redirect( $location, $status ) {
    // Отменяем перенаправление
    return false;
}

Как использовать хук wp_redirect для перенаправления только для определенных пользователей или ролей?

Хук wp_redirect позволяет перенаправить пользователя на другую страницу или URL. Иногда требуется перенаправление только для определенных пользователей или ролей.

Для этого можно использовать условные операторы внутри хука wp_redirect. Например, чтобы перенаправить только администраторов на страницу «admin.php», можно использовать следующий код:


function redirect_admin_users() {
    if ( current_user_can( 'administrator' ) ) {
        wp_redirect( 'admin.php' );
        exit;
    }
}
add_action( 'wp_redirect', 'redirect_admin_users' );

В данном примере, функция redirect_admin_users проверяет, является ли текущий пользователь администратором с помощью функции current_user_can. Если пользователь является администратором, то происходит перенаправление на страницу «admin.php» с помощью функции wp_redirect.

Как использовать хук wp_redirect для перенаправления на другой домен или поддомен?

Хук wp_redirect также позволяет перенаправить пользователя на другой домен или поддомен. Для этого необходимо указать полный URL в качестве параметра $location функции wp_redirect.


function redirect_to_another_domain() {
    wp_redirect( 'https://example.com' );
    exit;
}
add_action( 'wp_redirect', 'redirect_to_another_domain' );

В данном примере, функция redirect_to_another_domain перенаправляет пользователя на домен «https://example.com» с помощью функции wp_redirect.

Как использовать хук wp_redirect для перенаправления на страницу после успешной аутентификации?

Хук wp_redirect может быть использован для перенаправления пользователя на определенную страницу после успешной аутентификации. Для этого можно использовать хук wp_login.


function redirect_after_login( $user_login, $user ) {
    wp_redirect( 'https://example.com/welcome' );
    exit;
}
add_action( 'wp_login', 'redirect_after_login', 10, 2 );

В данном примере, функция redirect_after_login перенаправляет пользователя на страницу «https://example.com/welcome» после успешной аутентификации с помощью функции wp_redirect.

Как использовать хук wp_redirect для перенаправления на страницу после отправки формы?

Хук wp_redirect может быть использован для перенаправления пользователя на определенную страницу после отправки формы. Для этого можно использовать хук admin_post или admin_post_nopriv.


function redirect_after_form_submission() {
    wp_redirect( 'https://example.com/thank-you' );
    exit;
}
add_action( 'admin_post_my_form', 'redirect_after_form_submission' );
add_action( 'admin_post_nopriv_my_form', 'redirect_after_form_submission' );

В данном примере, функция redirect_after_form_submission перенаправляет пользователя на страницу «https://example.com/thank-you» после отправки формы с помощью функции wp_redirect. Обратите внимание, что мы используем и admin_post, и admin_post_nopriv для обработки отправки формы как для аутентифицированных, так и для неаутентифицированных пользователей.

Хук wp_redirect позволяет перенаправить пользователя на другую страницу или URL. Он может быть использован для перенаправления только для определенных пользователей или ролей, перенаправления на другой домен или поддомен, перенаправления на страницу после успешной аутентификации и перенаправления на страницу после отправки формы. Этот хук является мощным инструментом для управления перенаправлениями в WordPress.

Связанные элементы

  • Функция wp_redirect(): выполняет перенаправление на указанный путь или URL.
  • Функция wp_safe_redirect(): выполняет безопасное перенаправление на указанный путь или URL.
  • Функция wp_redirect_admin_locations(): перенаправляет пользователя на страницу входа в административную часть сайта.
  • Хук wp_redirect_status: фильтрует HTTP-код ответа для перенаправления.
Обсуждение