Como utilizar build_query() no WordPress2 min leitura

Exemplo prático de código para utilizar a função PHP build_query() do WordPress.

Com a função PHP build_query() você gera argumentos de URL a partir de um array. Veja o exemplo abaixo:

<?php
$argumentos = array(
	"nome" => "Daniel",
	"sobrenome" => "Kossmann",
	"cidade" => "Curitiba"
);

$argumentos_url = build_query( $argumentos );Code language: PHP (php)

O resultado da variável $argumentos_url será nome=Daniel&sobrenome=Kossmann&cidade=Curitiba

A vantagem de utilizar esta função do WordPress em vez da função http_build_query() nativa do PHP, é que ela possui compatibilidade com versões antigas do PHP. Não encontrei especificado quais seriam essas versões, mas acredito que sejam versões anteriores ao PHP 5. Se você souber, deixe um comentário com mais detalhes sobre isso.

Aviso importante: A função build_query() utiliza o valor false para o argumento urlencode da função _http_build_query. Por conta disso você deve se certificar que as chaves e os valores do array utilizados já estão codificados para serem utilizados na URL. Você pode usar a função utilizar urlencode_deep() ou http_build_query() para isso.

Para fazer o caminho inverso, transformar argumentos de URL em um array, você pode utilizar a função PHP wp_parse_str().

Criando os argumentos da URL de uma requisição a REST API do WordPress com a função build_query()

Um uso interessante para a função é montar os argumentos da URL de um requisição para a REST API do WordPress. No exemplo abaixo estou definindo os argumentos para pegar os três primeiros posts publicados, utilizando a função PHP get_rest_url() (que comentei no PainelWP 91) para obter dinamicamente a URL da REST API do site:

<?php
$argumentos = array(
	"orderby"	=> "date",
	"order"		=> "asc",
	"per_page"	=> "3",
);

$argumentos_url = build_query( $argumentos );

$url = get_rest_url(null, 'wp/v2/posts/?' . $argumentos_url);Code language: PHP (php)

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *