Kiedy tworzę wtyczki, testuję je na wielu wersjach WordPressa poprzez symlinkowanie mojego katalogu wtyczek w różnych wp-contentkatalogach. 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.phpjs/monkeyman-rewrite-analyzer.js
versions/3.1/wp-content/plugins/monkeyman-rewrite-analyzerjako dowiązanie symboliczne do powyższej wtyczki
3.1-multi-dir/wp-content/plugins/monkeyman-rewrite-analyzerjako dowiązanie symboliczne do powyższej wtyczki
3.1-multi-domain/wp-content/plugins/monkeyman-rewrite-analyzerjako 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_URLnie 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.