Para quem trabalha com o WordPress regularmente para criar sites de vários tipos, como por exemplo criar sites de compras coletivas, criar diretórios de artigos, criar sites de notícias como o Dihitt, criar sites de emprego, etc., a utilização de algumas das funções nativas do WordPress pode ser extremamente importante, principalmente quando você cria um projeto que tem como objetivo não se parecer com o próprio WordPress. Recentemente os colegas do digwp falaram sobre redireccionamentos, e neste artigo vamos dar-lhe a conhecer vários tipos de redireccionamentos que o próprio WordPress permite, e que na verdade possibilitam-lhe redireccionar os seus usuários para páginas internas ou externas, para a mesma página onde estavam, etc.

FUNÇÃO WP_REDIRECT

A função wp_redirect é uma função para redireccionar todos os usuários para um endereço URL absoluto. URLs absolutos são basicamente endereços URL completos deste género:

  • http://www.escolawp.com/
  • http://www.escolawp.com/2011/02/porque-e-que-o-wordpress-e-melhor-que-o-blogger/
  • http://www.escolawp.com/contactos/

Para redireccionar os seus usuários usando a função wp_redirect, copie e cole o seguinte trecho de código para o ficheiro do seu template wordpress:

<?php wp_redirect('http://exemplo.com/'); exit; ?>

Os parâmetros da função wp_redirect são dois em número:

  • $location = O URL absoluto para o qual o usuário será redireccionado. Não existe padrão.
  • $status = O código de estado usado. Por exemplo, 301302, etc. O padrão é 302.

Você poderá usar as template tags para o parâmetro $location, por exemplo:

<?php // redirect to the home page
wp_redirect(home_url()); exit; ?>

<?php // redirect back to current page
wp_redirect(get_permalink()); exit; ?>

Para usar um código de estado que não seja o padrão 302, especifique-o desta forma:

<?php wp_redirect('http://exemplo.com/', 301); exit; ?>

Este código irá enviar o usuário para a página exemplo.com juntamente com o código de estado 301 (Movido permanentemente). O código padrão 302 deverá ser usado para redireccionamentos temporários.

FUNÇÃO AUTH_REDIRECT

A função auth_redirect, é uma função simples que basicamente obriga o usuário a fazer o login para que possa aceder a determinadas páginas ou conteúdos. Por exemplo, imaginemos que você tem uma página de “downloads” que apenas é acessível a usuários registrados. Para prevenir o acesso a essa página por usuários que não fazem login, adicionaríamos o seguinte código no topo dessa mesma página:

<?php auth_redirect(); ?>

Esta função extremamente útil, verifica se o usuário está logado ou não no site, e redirecciona-o para a página de login caso não esteja. Por padrão, o usuário será redireccionado de volta para a página de onde veio (ex., a página de downloads). De momento esta função não aceita parâmetros.

FUNÇÃO WP_LOGOUT_URL

A função wp_logout_url retorna um URL da página de logout do seu blog. Mas poderá redireccionar o usuário para qualquer outro URL usando o parâmetro $redirect:

<?php echo wp_logout_url($redirect); ?>

O parâmetro $redirect é basicamente uma string de redireccionamento de URL. Alguns exemplos:

<!-- Logout & redirect to the home page -->
<a href="<?php echo wp_logout_url(home_url()); ?>">Logout</a>

<!-- Logout & redirect to current page -->
<a href="<?php echo wp_logout_url(get_permalink()); ?>">Logout</a>

<!-- Logout & redirect to specific URL -->
<a href="<?php echo wp_logout_url('http://exemplo.com/'); ?>">Logout</a>

A linkagem de logout automática é fabulosa.

FUNÇÃO IS_USER_LOGGED_IN

Por fim temos a função is_user_logged_in, que tecnicamente não faz qualquer tipo de redireccionamento, mas permite-lhe verificar se o usuário está ligado ou não. Eis um exemplo que deverá funcionar em qualquer template de página:

<?php if (is_user_logged_in()) { echo "logged in"; } else { echo "not logged in" } ?>

A função is_user_logged_in retorna valores TRUE ou FALSE, dependendo do estado do usuário. Portanto, para mostrar conteúdos customizados quando o usuário está ligado, você poderá usar o seguinte código:

<?php if (is_user_logged_in()) { ?>

	<p>Bem-Vindo, usuário!</p>

<?php } else { // not logged in ?>

	<p>Bem-Vindo, visitante!</p>

<?php } ?>

Se desejar, poderá ainda usar a função is_user_logged_in juntamente com outras template tags e códigos PHP para retornar resultados mais definidos. Por exemplo, poderemos servir conteúdos customizados a usuários que esteja ligados e numa determinada localização do seu site/blog:

<?php if (is_user_logged_in()) {

	if (is_page()) {
		echo "Logged-in user visiting a page";

	} elseif (is_feed()) {
		echo "Logged-in user viewing a feed";

	} elseif (is_search()) {
		echo "Logged-in user doing a search";

	} else {
		echo "Logged-in user doing something else";
	}

} else { // user is not logged-in

	if (is_page()) {
		echo "Normal visitor on a page";

	} elseif (is_feed()) {
		echo "Normal visitor viewing a feed";

	} elseif (is_search()) {
		echo "Normal visitor doing a search";

	} else {
		echo "Normal visitor doing something else";
	}

} ?>

Este exemplo demonstra a flexibilidade das tags condicionais do WordPress e como a função is_user_logged_in pode ser usada para controlar outro tipo de ações do usuário.

Até já!