Blog

Como funcionam as dependências de plugins no WordPress 6.5?

Uncategorized

Como funcionam as dependências de plugins no WordPress 6.5?

O WordPress é conhecido por sua flexibilidade e capacidade de expansão por meio de plugins. No entanto, às vezes, instalar plugins interdependentes pode se tornar uma dor de cabeça. Felizmente, na versão WordPress 6.5, uma nova função chamada “Dependências de Plugins” foi introduzida, simplificando significativamente esse processo. Neste artigo, vamos descobrir como funcionam as Dependências de Plugins no WordPress.

Até agora, a instalação de plugins dependentes de outros exigia verificação e ativação manual dos componentes necessários. A nova função de “Dependências de Plugins” automatiza esse processo, garantindo um funcionamento mais suave e sem erros.

Como isso funciona?

Os desenvolvedores de plugins agora podem especificar suas dependências usando um novo cabeçalho chamado “Requires Plugins” (Plugins Necessários). Nesse cabeçalho, é especificada uma lista de plugins necessários no formato de slugs do WordPress, separados por vírgulas. Por exemplo, my-plugin ou shop, payment-gateway. Não confunda slugs com o tipo de registro, como my-plugin/my-plugin.php.

/**

    *Nome do Plugin: Checkout do Gateway de Pagamento Expresso para Loja
    *Requires Plugins: shop, payment-gateway
    */

Vantagens da nova função:

  • Facilidade de instalação: Não é mais necessário procurar e ativar manualmente os plugins dependentes. Tudo é feito automaticamente durante a instalação do plugin principal.
  • Menos erros: Elimina-se o risco de esquecer de ativar uma dependência, o que poderia levar a uma função principal não funcionar corretamente.
  • Melhor gerenciamento de plugins: Agora você pode facilmente ver quais plugins dependem de outros, simplificando o processo de atualização, desativação e remoção.

Requisitos de Dependências no WordPress 6.5

Agora que entendemos o funcionamento do novo recurso, vamos nos aprofundar nos detalhes técnicos e nos requisitos para plugins dependentes e base.
Plugins Dependentes (addons)

  • Instalação: A instalação de um plugin dependente não é possível até que todas as suas dependências básicas sejam instaladas.
  • Ativação: A ativação de um plugin dependente também é bloqueada até que todas as suas dependências básicas sejam ativadas.

Plugins Base (dependencies)

  • Desativação: A desativação de um plugin base não é possível se plugins ativos dependem dele.
  • Remoção: A remoção de um plugin base não é possível se plugins instalados dependem dele.

O que acontece quando as dependências são quebradas?

Se um plugin base for removido via FTP ou outra ferramenta de gerenciamento de arquivos, o painel de controle do WordPress exibirá uma notificação de que existem dependências não ativadas ou não instaladas. Além disso, uma mensagem de erro aparecerá na linha de cada plugin dependente cujas dependências foram quebradas.

Atualização de plugin com nova dependência

Ao atualizar um plugin que agora possui uma nova dependência, a atualização em si será permitida e o plugin dependente permanecerá ativo. No entanto, uma notificação será exibida no painel de controle informando que é necessário instalar e/ou ativar as dependências ausentes.

Dependências circulares

Uma dependência circular ocorre quando dois ou mais plugins dependem um do outro.

Por exemplo: Plugin A requer Plugin B, Plugin B requer Plugin C, e Plugin C requer Plugin A.

O recurso “Dependências de Plugins” é capaz de detectar dependências circulares e exibir uma notificação aos usuários de que os requisitos do plugin são inconsistentes. Esses plugins não podem ser ativados e os usuários são aconselhados a entrar em contato com os autores dos plugins para resolver a dependência cíclica.

Ainda é necessário usar programação defensiva?

Sim. O recurso “Dependências de Plugins” simplifica a instalação e ativação de componentes necessários para os usuários, além de informá-los sobre dependências quebradas. Isso significa que os autores de plugins não precisam mais verificar manualmente a presença de dependências e exibir notificações.

No entanto, atualmente o recurso “Dependências de Plugins” não suporta a verificação da versão mínima ou máxima dos plugins dependentes, nem leva em consideração a ordem de carregamento deles. Portanto, ainda é recomendável aos desenvolvedores usar as funções function|class|interface_exists() e verificar versões quando o plugin depende de funcionalidades específicas disponíveis em momentos específicos.

Limitações da Função de Dependências de Plugins no WordPress 6.5

O novo recurso é definitivamente um passo adiante, mas é importante entender suas limitações atuais:

Plugins Hospedados no WordPress.org:

  • Plugins dependentes hospedados no WordPress.org só podem declarar dependências em outros plugins também hospedados no WordPress.org. Se o seu plugin, hospedado no WordPress.org, requer plugins de terceiros, atualmente não é recomendado usar o cabeçalho “Requires Plugins”.

Plugins Não Hospedados no WordPress.org:

  • Plugins dependentes não hospedados no WordPress.org podem declarar dependências em qualquer outro plugin, independentemente de onde estão hospedados. No entanto, a interface do usuário não fornecerá um link para instalar dependências de terceiros, e sua instalação ainda deve ser feita manualmente.

Plugins Must-Use como Dependências:

  • O uso de plugins Must-Use como dependências atualmente não é oficialmente suportado pelo núcleo do WordPress. A discussão sobre essa possibilidade continua no tópico #60504, e forneceremos mais informações quando decisões sobre um potencial suporte futuro forem tomadas.

Temas que Requerem Plugins:

  • Temas que requerem plugins atualmente não são suportados pela função “Dependências de Plugins”. Os desenvolvedores de temas ainda devem usar verificações e mensagens existentes.

Novo Filtro de Gancho

Além de automatizar a instalação e ativação de plugins dependentes, a função “Dependências de Plugins” fornece aos desenvolvedores um nível adicional de flexibilidade com o novo filtro de gancho wp_plugin_dependencies_slug.

Para que serve o filtro wp_plugin_dependencies_slug?

Este filtro permite aos desenvolvedores de plugins alterar os slugs das dependências. Vamos considerar um exemplo. Suponha que um plugin dependente declare uma dependência de my-plugin, mas também existe uma versão premium desse plugin, my-plugin-pro. Usando o filtro, você pode reescrever a dependência para my-plugin-pro, para que a função “Dependências de Plugins” reconheça e instale a versão premium.

Parâmetros do filtro:

  • string $slug – O slug da dependência.
add_filter( 'wp_plugin_dependencies_slug', 'convert_myplugin_to_myplugin_pro' );

function convert_myplugin_to_myplugin_pro( $slug ) {
    if ( 'my-plugin' === $slug ) {
        $slug = 'my-plugin-pro';
    }
    return $slug;
}

Classe WP_Plugin_Dependencies

No núcleo do WordPress, foi adicionada a nova classe WP_Plugin_Dependencies. Ela fornece um conjunto de métodos para verificar e gerenciar as dependências de plugins a partir do seu próprio código.

Métodos da API disponíveis:

  • static ::initialize() – Inicializa a função “Dependências de Plugins”, lendo as dependências do cabeçalho “Requires Plugins” e carregando os dados dos plugins da API para as dependências. Executado apenas uma vez por sessão.
  • static ::has_dependents( $plugin_file ) – Determina se um plugin tem plugins dependentes.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • bool – Se o plugin tem plugins dependentes.
  • static ::has_dependencies( $plugin_file ) – Determina se um plugin tem dependências de outros plugins.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • bool – Se o plugin tem dependências de outros plugins.
  • static ::has_active_dependents( $plugin_file ) – Determina se um plugin tem plugins dependentes ativos.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • bool – Se o plugin tem plugins dependentes ativos.
  • static ::get_dependents( $slug ) – Obtém os caminhos dos arquivos dos plugins que dependem de uma determinada dependência.
    • Parâmetros:
      • string $slug – O slug da dependência.
    • Retorna:
      • array – Uma matriz de caminhos dos arquivos dos plugins dependentes em relação à pasta plugins.
  • static ::get_dependencies( $plugin_file ) – Obtém os slugs dos plugins dos quais um determinado plugin depende.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin dependente em relação à pasta plugins.
    • Retorna:
      • array – Uma matriz de slugs dos plugins dependentes.
  • static ::get_dependent_filepath( $slug ) – Obtém o caminho do arquivo de um plugin dependente.
    • Parâmetros:
      • string $slug – O slug do plugin dependente.
    • Retorna:
      • string|false – O caminho do arquivo do plugin dependente em relação à pasta plugins ou false se o plugin não tiver dependências.
  • static ::get_dependency_filepath( $slug ) – Obtém o caminho do arquivo da dependência em relação à pasta do plugin.
    • Parâmetros:
      • string $slug – O slug da dependência.
    • Retorna:
      • string|false – Se a dependência estiver instalada, o caminho para o seu arquivo em relação à pasta plugins, caso contrário false.
  • static ::has_unmet_dependencies( $plugin_file ) – Determina se um plugin tem dependências não atendidas.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • bool – Se o plugin tem dependências não atendidas.
  • static ::has_circular_dependency( $plugin_file ) – Determina se um plugin tem uma dependência circular.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • bool – Se o plugin tem uma dependência circular.
  • static ::get_dependent_names( $plugin_file ) – Obtém os nomes dos plugins que dependem de um determinado plugin.
    • Parâmetros:
      • string $plugin_file – O arquivo do plugin em relação à pasta plugins.
    • Retorna:
      • array – Uma matriz de nomes dos plugins dependentes.

Conclusão. Dependências de Plugins no WordPress

A nova função “Dependências de Plugins” no WordPress 6.5 marca um grande avanço na simplificação do gerenciamento de plugins inter-relacionados. Ela oferece uma instalação e ativação mais conveniente, reduzindo a probabilidade de erros e ajudando os usuários a manter seus sites atualizados.

Os desenvolvedores de plugins também recebem uma série de benefícios, como verificação automática de dependências, a capacidade de personalizar comportamentos usando filtros e acesso a uma nova API para trabalhar com dependências no código do plugin.

No geral, as “Dependências de Plugins” são um valioso acréscimo ao ecossistema do WordPress, prometendo melhorar o trabalho tanto para usuários quanto para desenvolvedores.

Espera-se que este recurso seja desenvolvido no futuro, e estamos ansiosos para ver as novas funcionalidades que ele pode oferecer.

Leave your thought here

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