Como o kaiser respondeu que template_redirect
hook é realmente apropriado para redirecionamentos.
Você também deve usar a função wp_redirect()
, em vez de definir o cabeçalho.
Eu quero criar um plug-in que capture determinados parâmetros de URL da string de consulta para criar uma nova string de consulta para a mesma página. Estou seguindo o excelente livro Professional Plugin Development do WordPress, mas não tenho certeza qual gancho usar para esta ação. Aqui está a minha função de ação:
add_action( 'init', 'tccl_redirect' );
function tccl_redirect() {
header ( "Location: http://www.mysite.com/$mypage?$newparam=$newvalue" );
?>
Quais ganchos são adequados para redirecionamentos de cabeçalho?
Como o kaiser respondeu que template_redirect
hook é realmente apropriado para redirecionamentos.
Você também deve usar a função wp_redirect()
, em vez de definir o cabeçalho.
Eu diria template_redirect
. Mas dê uma olhada na Referência de ação .
Não se esqueça de exit()
no redirecionamento.
/**
* 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' );
Mas eu diria que este exemplo do kaiser não funciona, porque depois de um redirecionamento esse gancho template_redirect funciona de novo e de novo, você terá um encaminhamento infinito !
Melhor é verificar, se você já está na página inicial, assim:
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');
Funciona bem para mim. Alguma sugestão? Atenciosamente!