Usando funções no lugar de globais: get_post_field
Como o PHP continuou avançando e o WordPress (e sua economia de desenvolvimento) trabalha para começar a usar mais recursos mais modernos, uma das coisas que ainda vemos acontecendo é o uso de globais dentro do WordPress.
Até certo ponto, é inevitável: partes significativas do aplicativo foram criadas usando globais quando esse era o recurso principal; outras partes, no entanto, avançaram fornecendo classes ou funções que nos impedem de fazer isso.
Caso em questão: get_post_fieldé uma alternativa sólida ao uso do $postglobal que fornece muitas das mesmas informações de uma maneira um pouco mais moderna (e sem dúvida mais segura) de ler os dados.
Para muitos, usar algo como o seguinte é uma prática comum:
<?php
/**
* Retrieves the slug for the current post via the current post's
* post_name property.
*
* @return string the slug of the post.
*/
function getPostSlug(): string
{
global $post;
return $post->post_name;
}
Não é incomum ver algo como get_the_title(get_the_ID());em todo o código, o que é uma coisa boa, mas ainda há momentos em que vemos código escrito que acessa certos aspectos do post atual.
E eu questiono o quão necessária essa prática realmente é dada a get_post_fieldfunção. Da referência de código:
Recupere dados de um campo de postagem com base no ID da postagem.
Exemplos do campo post serão, ‘post_type’, ‘post_status’, ‘post_content’, etc e baseados na propriedade do objeto post ou nos nomes das chaves.
Um exemplo semelhante a essa função seria a get_user_byfunção em que você passa uma string específica para a função para a qual deseja recuperar informações, bem como um ID (ou o objeto post completo, mas quando o ID é suficiente, por que não?).
A diferença aqui é que você recuperará o valor do campo solicitado ou uma string vazia (em vez de um erro ou nulo ou falso) quando a solicitação falhar. Isso significa que precisaríamos escrever uma cláusula condicional ou de guarda para lidar com esse caso.
Portanto, um caso de uso completo dessa função e do código pode exigir algumas funções :
<?php
/**
* Generates a boolean value based on the presence of a post slug.
*
* @return bool True if there is a slug; otherwise, false.
*/
function hasPostSlug(): bool
{
return ('' === getPostSlug());
}
/**
* Retrieves the slug for the current post via the get_post_field
* API function.
*
* @return string the slug of the post.
*/
function getPostSlug(): string
{
return get_post_field('post_name', get_the_ID());
}
Isso tudo pode ser amarrado assim:
<?php
if (hasPostSlug()) {
echo getPostSlug();
}
O objetivo de compartilhar esse tipo de código é ajudar a compartilhar algumas das alternativas que temos às variáveis globais para também compartilhar APIs que existem, mas podem ser subutilizadas.
