Cuando desarrollo complementos, los pruebo en varias versiones de WordPress al vincular mi directorio de complementos en los diferentes wp-contentdirectorios. Esto es genial ya que solo tengo que editar los archivos una vez, pero rompe una construcción importante para generar referencias a los recursos en mi complemento: se __FILE__refiere a la ubicación física del complemento, no a la que está dentro wp-content. ¿Cómo debería resolver esto?
La estructura de mi directorio se ve así:
/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-analyzercomo un enlace simbólico al complemento anterior
3.1-multi-dir/wp-content/plugins/monkeyman-rewrite-analyzercomo un enlace simbólico al complemento anterior
3.1-multi-domain/wp-content/plugins/monkeyman-rewrite-analyzercomo un enlace simbólico al complemento anterior
Si quiero poner en cola el archivo Javascript, debería usarlo plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] ), pero usarlo __FILE__aquí no funcionará, porque la ruta real del archivo será /path/to/wordpress/development/dir/plugin-development/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php, no /path/to/wordpress/development/dir/versions/*/wp-content/plugins/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php, por lo que WordPress no puede quitar la primera parte y generar una URL relativa a la instalación de WordPress.
WP_PLUGIN_URLno se recomienda el uso porque los administradores deberían poder cambiar el nombre del directorio de este complemento específico, pero ¿hay alguna otra razón para evitarlo? Y, de hecho, su boleto sería una solución simple.