Quando desenvolvo plugins, eu os testo em várias versões do WordPress, associando o diretório do meu plugin nos diferentes wp-content
diretórios. Isso é ótimo, pois só preciso editar os arquivos uma vez, mas quebra uma construção importante para gerar referências aos recursos no meu plug-in: __FILE__
refere-se ao local do plug-in físico, não ao local wp-content
. Como devo resolver isso?
Minha estrutura de diretórios é assim:
/path/to/wordpress/development/dir/
plugin-development/
monkeyman-rewrite-analyzer/
monkeyman-rewrite-analyzer.php
js/
monkeyman-rewrite-analyzer.js
versions/
3.1/
wp-content/
plugins/
monkeyman-rewrite-analyzer
como um link simbólico para o plug-in acima
3.1-multi-dir/
wp-content/
plugins/
monkeyman-rewrite-analyzer
como um link simbólico para o plug-in acima
3.1-multi-domain/
wp-content/
plugins/
monkeyman-rewrite-analyzer
como um link simbólico para o plug-in acima
Se eu quiser enfileirar o arquivo Javascript, eu deveria usar plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] )
, mas usando __FILE__
aqui não vai funcionar, porque o caminho do arquivo real será /path/to/wordpress/development/dir/plugin-development/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
, não /path/to/wordpress/development/dir/versions/*/wp-content/plugins/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
, de modo WordPress não pode tirar a primeira parte para fora e gerar uma URL relativa à instalação do WordPress.
WP_PLUGIN_URL
não é recomendado porque os administradores devem ter permissão para alterar o nome do diretório deste plug-in específico, mas há outro motivo para evitá-lo? E, de fato, seu ingresso seria uma solução simples.