Algumas funções, por mais simples que sejam, são de grande utilidade e se tornam uma grande aliada dos desenvolvedores. No WordPress temos inúmeras funções com esse perfil. Hoje conheceremos duas delas: a add_query_arg() e a remove_query_arg(). A primeira é utilizada para agregar a URL parâmetros, enquanto a segunda se encarrega de remover os desejados.
Num primeiro momento você pode pensar em uma solução assim para agregar ao link um parâmetro de URL:
<?php the_permalink(); ?>?nome_do_parametro=valor_do_parametro
Em seguida, eu lhe questiono: e se a opção de Links Permanentes do WordPress estiver desabilitada? O resultado seria algo assim:
http://enderecodosite.com.br?p=ID_do_Post?nome_do_parametro=valor_do_parametro
Ou seja, #fail. Prefira uma solução assim:
<?php while( have_posts() ) : the_post(); ...
echo add_query_arg( 'nome_do_parametro', 'valor_do_parametro', get_permalink() );?>
Quando o WordPress estiver com a opção de Links Permanentes desativada por padrão, teremos o seguinte retorno:
http://enderecodosite.com.br?p=ID_do_Post&nome_do_parametro=valor_do_parametro
Quando estiver habilita, o retorno será:
http://enderecodosite.com.br/slug-do-post/?nome_do_parametro=valor_do_parametro
Percebeu a diferença? Ou seja, o retorno da função add_query_arg() será de acordo com a configuração de Links Permanentes do WordPress. Ela faz essa verificação internamente e assim considera o retorno sempre correto do link com o parâmetro de URL desejado.
Podemos ir um pouco além com a função add_query_arg(), explorando melhor seus parâmetros. Vamos conhecê-los:
- O primeiro, $param1, pode ser o nome de um parâmetro ou um array associativo, onde as chaves são os nomes dos parâmetros e os valores dos respecitvos parâmetros. É o único parâmetro requerido;
- O $param2 é opcional. Se informado, será interpretado como o valor do parâmetro informado em $param1; ou a URL a ser considerada caso o $param1 seja informado como um array;
- Já o terceiro parâmetro, $old_query_or_uri, é considerando quando $param1 e $param2 são respectivamente o nome e valor do parâmetro e ele recebe a URL a ser considerada. Caso não informado, será considerado a URL em questão.
Um outro exemplo clássico é quando precisamos adicionar, por exemplo, as tags UTM do Google Analytics. Veja como fica simples com essa função:
<?php $utm_tags = array( 'utm_source' => 'iMasters', 'utm_medium' => 'Article', 'utm_campaign' => 'ColunaWP' ); while( have_posts() ) : the_post(); ... echo add_query_arg( $utm_tags, get_permalink() ); ...
As possibilidades de uso dessa função são diversas e tenho certeza que a partir de agora, se você não a conhecia, passará usa-la com frequência em seus projetos.
E quanto a função remove_query_arg(), ela trabalha de forma oposta, isto é, remove parâmetros específcos da URL em questão. Por exemplo, considere a seguinte URL no navegador de internet:
http://enderecodosite.com.br/slug-do-post/?nome_do_parametro=valor_do_parametro&nome_de_outro_parametro=valor_de_outro_parametro
Se precisarmos tirar o primeiro parâmetro e deixar somente o segundo, procedemos assim:
<?php $new_url = remove_query_arg( 'nome_do_parametro' ); echo $new_url; ?>
O retorno será:
http://enderecodosite.com.br/slug-do-post/?nome_de_outro_parametro=valor_de_outro_parametro
A função remove_query_arg(), além de aceitar uma string no primeiro parâmetro, é possível também passar um array com várias keys a serem removidas, e assim elimitar todos os parâmetros, como no exemplo a seguir:
<?php $new_url = remove_query_arg( array( 'nome_do_parametro', 'nome_de_outro_parametro' ) ); echo $new_url; ?>
Com o exemplo acima, o retorno será somente a URL, assim:
http://enderecodosite.com.br/slug-do-post/
É isso. Espero ter apresentado uma grande aliada a vocês.
Grande abraço!