Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Como utilizar urlencode_deep() no WordPress - Daniel Kossmann

Com a função PHP urlencode_deep() você codifica os valores de um array para serem utilizados em uma URL.

<?php
$argumentos = array(
	"cidade" => "São José dos Pinhais",
	"estado" => "Paraná",
	"caracteres" => "ã %s & !"
);

$argumentos_codificados = urlencode_deep( $argumentos );Code language: PHP (php)

O resultado da variável $argumentos_url será:

Array(
    "cidade" => "S%C3%A3o+Jos%C3%A9+dos+Pinhais"
    "estado" => "Paran%C3%A1"
    "caracteres" => "%C3%A3+%25s+%26+%21"
)Code language: PHP (php)

Codificando valores dinâmicos dos argumentos da URL de uma requisição a REST API do WordPress com a função urlencode_deep()

Utilizando como base o código prático da função PHP build_query() da última dica, adicionei as variáveis $itens e $busca, onde não é possível afirmar se elas já estarão em um formato válido para argumentos da URL. Isto normalmente acontece quando estamos recebendo esses valores de um usuário, através de um formulário de configuração. Segue abaixo o código do exemplo, já alterado para este cenário:

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

// Codifica os valores para serem utilizados em uma URL
$argumentos_codificados = urlencode_deep( $argumentos );

$argumentos_url = build_query( $argumentos_codificados );

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

É importante salientar que a função PHP urlencode_deep() codifica apenas os valores de um array, as chaves não são codificadas. Se você precisar codificar ambos para serem utilizados em uma URL e não precisar se preocupar com compatibilidade com versões mais antigas do PHP, recomendo função http_build_query() nativa do PHP pois ela irá sanitizar tanto as chaves como os valores:

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

$argumentos_url = http_build_query( $argumentos_codificados );

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


Comments

Deixe um comentário

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