Kiedy tworzę wtyczki, testuję je na wielu wersjach WordPressa poprzez symlinkowanie mojego katalogu wtyczek w różnych wp-content
katalogach. Jest to świetne, ponieważ muszę edytować pliki tylko raz, ale łamie ważną konstrukcję, aby generować odwołania do zasobów w mojej wtyczce: __FILE__
odnosi się do fizycznej lokalizacji wtyczki, a nie tej w wp-content
. Jak mam to rozwiązać?
Moja struktura katalogów wygląda następująco:
/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
jako dowiązanie symboliczne do powyższej wtyczki
3.1-multi-dir/
wp-content/
plugins/
monkeyman-rewrite-analyzer
jako dowiązanie symboliczne do powyższej wtyczki
3.1-multi-domain/
wp-content/
plugins/
monkeyman-rewrite-analyzer
jako dowiązanie symboliczne do powyższej wtyczki
Jeśli chcę enqueue plik JavaScript, powinno się używać plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] )
, ale przy użyciu __FILE__
tutaj nie będzie działać, ponieważ rzeczywista ścieżka do pliku będzie /path/to/wordpress/development/dir/plugin-development/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
, nie /path/to/wordpress/development/dir/versions/*/wp-content/plugins/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
, tak nie może pozbawić WordPress pierwszą część na zewnątrz i wygenerować URL w stosunku do instalacji WordPressa.
WP_PLUGIN_URL
nie jest zalecane, ponieważ administratorzy powinni mieć możliwość zmiany nazwy katalogu tej konkretnej wtyczki, ale czy jest też inny powód, aby tego unikać? I rzeczywiście, twój bilet byłby prostym rozwiązaniem.