jnthnclrk
  • 0
Учитель

Какой хук следует использовать для добавления действия, содержащего перенаправление?

  • 0

Я хочу создать плагин, который получает определенные параметры URL-адреса из строки запроса, чтобы создать новую строку запроса для той же страницы. Я слежу за отличной книгой Professional WordPress Plugin Development, но я не уверен, какой хук использовать для этого действия. Вот моя функция действия:

add_action( 'init', 'tccl_redirect' );
function tccl_redirect() {
    header ( "Location: http://www.mysite.com/$mypage?$newparam=$newvalue" );
?>

Какие хуки подходят для редиректа заголовков?

Share
  1. Вы действительно хотите изменить конечный URL или только переменные, используемые в WP_Query?

    • 0
  2. Как кайзер ответил template_redirect, хук действительно подходит для редиректов.

    Также вы должны использовать wp_redirect() функцию, а не устанавливать заголовок.

    • 0
  3. я бы сказал template_redirect . Но взгляните на Action Reference.

    Пример

    Не забудьте exit() включить редирект.

    /**
     * This example redirects everything to the index.php page
     * You can do the same for the dashboard with admin_url( '/' );
     * Or simply base the redirect on conditionals like 
     * is_*() functions, current_user_can( 'capability' ), globals, get_current_screen()...
     * 
     * @return void
     */
    function wpse12535_redirect_sample() {
    
        exit( wp_redirect( home_url( '/' ) ) );
    
    }
    
    add_action( 'template_redirect', 'wpse12535_redirect_sample' );
    
    • 0
  4. Но я бы сказал, что этот пример от kaiser не может работать, потому что после редиректа этот хук template_redirect срабатывает снова и снова, у вас будет бесконечная переадресация !

    Лучше проверить, если вы уже на главной странице, вот так:

    function wpse12535_redirect_sample() {
    
        $current_url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        $site_url = get_bloginfo('siteurl') . "/";
    
        if($current_url != $site_url)       
          exit( wp_redirect( home_url( '/' ) ));    
    
    }
    add_action( 'template_redirect', 'wpse12535_redirect_sample');
    

    У меня работает нормально. Какие-либо предложения? С уважением!

    • 0

Оставить ответ

You must login to add an answer.