WordPress: melhorando requisitos do PHP em temas e plugins

É possível melhorar requisitos do PHP em temas e plugins, mas esta é uma tarefa para todos nós. Conheça algumas maneiras práticas para fazer isso e aumentar seu nível em WordPress.

Ir para o artigo

Através do uso de features que já existem há tempos, é possível melhorar requisitos do PHP em temas e plugins WordPress.

Já se fala há algum tempo sobre os requisitos de PHP do WordPress. Em abril deste ano, a versão mínima do PHP para rodar WordPress será a 5.6. E talvez você possa ter a dúvida: por que o WordPress continua a suportar versões antigas/antiquadas do PHP? O principal motivo é a retrocompatibilidade e os milhões de sites que contam com o WordPress.

As estatísticas do WordPress (na data desta publicação) mostram que 34,6% dos sites com WordPress ainda estão usando o PHP 5.6. Essa informação somada ao fato de que mais de 57,6% das instalações do WordPress estão em versões obsoletas do PHP, certamente deve ser um bom motivo.

Se nós, como desenvolvedores, começarmos a dar suporte prioritário a versões atuais do PHP, isso pode muito bem ajudar na tarefa de levar os hosts e seus clientes para além das versões obsoletas do PHP e, consequentemente, para hospedagens mais rápidas e seguras. Concorda?

Então vejamos algumas medidas possíveis para melhorarmos os requisitos do PHP em temas e plugins WordPress.

Sintaxe Abreviada de Array (Short Array Syntax)

Sintaxe Abreviada de Array (Short Array Syntax) é um recurso que foi introduzido no PHP 5.4. É uma atualização simples, mas bastante interessante e fácil de se começar a usar.

Em vez de usar array(), é possível usar colchetes (brackets). No contexto do WordPress, isso pode economizar um pouco de espaço.

Para dar um exemplo, uma WP_Query pode ser escrita assim:

Mas, com a sintaxe abreviada (Short Array Syntax), ficaria assim:

Para os mais familiarizados com JavaScript, a sintaxe fica bem parecida. Isso é especialmente benéfico se o array for curto o suficiente para estar em uma linha; e parece ainda mais limpo quando se usa somente colchetes em vez de toda a palavra “array”.

Funções Anônimas (Anonymous Functions)

A partir do PHP 5.3, temos acesso a Funções Anônimas (Anonymous Functions). Uma função anônima é simplesmente uma função sem nome.

Geralmente, criamos funções nomeadas:

No entanto, depois da introdução de funções anônimas em PHP, não é preciso, necessariamente, dar nome a uma função:

Mas para o quê isso poderia ser necessário? Há muitos casos, na verdade, quando se trabalha com o WordPress, em que se usa uma função exatamente em um só lugar, passando esses nomes de função para hooks ou filters.

Normalmente, isso se parece com:

No entanto, (dentro do exemplo) esse é o único local em que custom_excerpt_length está sendo usada. Então, por que dar um nome para ela?

Isso poderia ser reescrito como:

Tenha em mente que, se você espera usar uma função em mais de um lugar, você definitivamente deve dar um nome a ela para que ela possa ser chamada.

Outra opção é atribuir uma função a uma variável (método com o qual você pode estar familiarizado se também programa em JavaScript):

Sintaxe Abreviada de Echo (Short Echo Syntax)

A partir do PHP 5.4.0, a Sintaxe Abreviada de Echo (Short Echo Syntax) foi permanentemente ativada, enquanto a diretiva short_open_tag anterior precisava ser ativada via configuração do PHP.

Normalmente, usa-se echo() assim:

Com a sintaxe abreviada, fica:

Apesar de ser uma sintaxe que divide gostos (e padrões), é inegável que fica mais enxuto (e mais simples, diriam alguns).

Namespaces

Apesar de namespaces terem sido introduzidos no PHP 5.3, para muitos desenvolvedores WordPress, namespaces podem parecer algo estranho, já que são inexistentes no core do WordPress e na maioria dos plugins e temas.

O que são namespaces?

Você pode pensar em namespaces da mesma maneira que pensa em organizar arquivos do computador em pastas: não é possível salvar um arquivo com o mesmo nome na mesma pasta, mas é possível salvar um arquivo com o mesmo nome em uma pasta diferente.

Frequentemente, enfrenta-se um problema semelhante ao se trabalhar com funções e classes no PHP. Certamente, você já passou pela situação de nomear uma função com um nome genérico e se deparar com um erro “Não é possível redeclarar a função” — e tentou contornar adicionando uma palavra extra ao nome ou algo do tipo.

Para evitar essa colisão de nomenclatura, tem sido prática comum prefixar cada função com um nome exclusivo. Esta é uma forma de namespace. Por exemplo, se o seu tema tiver o nome “Branch”, provavelmente você incluirá todas as suas funções com esse nome — title() passaria a ser branch_title() no seu tema.

Namespaces e WordPress

A partir do PHP 5.3, namespacing de verdade ficou disponível. Isso permite adicionar a palavra-chave namespace a um arquivo PHP, colocando todas as funções ou classes declaradas dentro desse arquivo nesse namespace.

Seguindo o exemplo anterior, isso significa que é possível ter uma função chamada simplesmente title(), mas mantê-la dentro de um namespace.

A função seria então algo parecido com isto:

Se simplesmente tentar chamar <?= title(); ?>, acontecerá um erro fatal Call to undefined function title(). Isso porque, agora, é preciso usar o namespace completo. Para usar a função title(), tem que ser desta maneira: <?= Branch\Titles\title(); ?>.

Namespacing é simplesmente outra maneira de manter funções e classes organizadas e livres de colisões de nomes. Além da organização, como um (super) benefício extra de se usar namespaces, agora torna-se possível também o uso de carregamento automático (autoloading).

Forçando o WordPress para frente

Como foi mostrado, várias das possibilidades para melhorar os requisitos do PHP em projetos WordPress, na verdade, não passam da aplicação de features já existentes na linguagem há bastante tempo…

Como desenvolvedores, queremos que o WordPress continue a evoluir, crescer e amadurecer. Faça a sua parte para ajudar o processo. O suporte a versões antiquadas e inseguras do PHP não deve ser uma meta dos desenvolvedores.

Vamos todos melhorar nossos requisitos de PHP para que nossos temas e plugins sejam mais modernos e bem escritos. Nós podemos melhorar a web.