Em que ordem os plugins são carregados no WordPress?
E dentro da pasta de um plugin específico, que ordem é seguida para o carregamento?
Em que ordem os plugins são carregados no WordPress?
E dentro da pasta de um plugin específico, que ordem é seguida para o carregamento?
Respostas:
No wp-settings.php
, o WordPress primeiro verifica se há plugins de uso obrigatório (plug-ins na mu-plugins
pasta opcional ) e os carrega.
Então, se você estiver executando uma instalação multisite, ele verifica plug-ins ativados pela rede e os carrega.
Em seguida, ele verifica todos os outros plug-ins ativos, observando a active_plugins
entrada da wp_options
tabela do banco de dados e os percorre. Os plugins serão listados em ordem alfabética.
Aqui está a ordem em que o WordPress carrega praticamente tudo: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
O problema é que geralmente não importa em que ordem cada plug-in individual é carregado, porque plug-ins escritos corretamente usarão ganchos do WordPress, que permitem conectar funcionalidades em pontos específicos posteriormente na inicialização do WordPress. (Plugins escritos corretamente também prefixam suas funções e classes para que não haja conflitos.)
Mais informações sobre a API do plugin: http://codex.wordpress.org/Plugin_API/
Depende totalmente do plugin. O WordPress carrega apenas um arquivo no plug-in, o que geralmente é chamado the-plugin-name.php
e contém o título, a descrição, o autor etc. na parte superior. Cabe ao plugin carregar o restante de seus arquivos, usando require_once
and wp_enqueue_script
e outros enfeites.
apply_filters()
para criar um gancho, mas é executado antes de um plug-in que usa add_filter()
, ainda funcionará? Logicamente, parece que apply_filters()
já foi acionado, então as add_filter()
chamadas no segundo plugin não farão nada. Importa em que ordem os plug-ins são carregados ao usar apenas ganchos criados por plug-ins?
apply_filters()
. add_filter()
deve executar antes apply_filters()
. Se add_filter()
estiver em um arquivo de plug-in e não em outra função, ele será executado no plugins_loaded
gancho, o que geralmente acontece antes que você precise apply_filters()
.
the_content
- como é determinada a ordem de aparência?
Acho que é útil incluir uma ação de 'carregamento tardio' no meu plug-in que é executada depois que todos os plug-ins concluíram seu carregamento da seguinte maneira:
add_action('plugins_loaded', 'my_late_loader');
A função my_late_loader é iniciada depois de todos os outros plugins, o que me permite usar ganchos definidos por outros plugins em minha própria função my_other_function, que é iniciada em my_late_loader
/**
* Late loading function for actions that must run after all plugins
* have loaded
*/
function my_late_loader(){
add_action( 'some_hook', 'my_other_function', 10, 1);
}
Um pouco complicado (eu sei), mas isso garante que ganchos em outros plug-ins sejam criados antes de serem adicionados, independentemente da ordem de carregamento do plug-in.