Pregunta:
Cuando desarrollo complementos, los pruebo en varias versiones de WordPress mediante el enlace simbólico de mi directorio de complementos en los diferentes directorios de wp-content
. Esto es genial ya que solo tengo que editar los archivos una vez, pero rompe una construcción importante para generar referencias a recursos en mi complemento: __FILE__
refiere a la ubicación física del complemento, no a la de wp-content
. ¿Cómo debo solucionar esto?
Mi estructura de directorio se ve así:
-
/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 enlace simbólico al complemento anterior
-
-
-
-
3.1-multi-dir/
-
wp-content/
-
plugins/
-
monkeyman-rewrite-analyzer
como enlace simbólico al complemento anterior
-
-
-
-
3.1-multi-domain/
-
wp-content/
-
plugins/
-
monkeyman-rewrite-analyzer
como enlace simbólico al complemento anterior
-
-
-
-
-
Si quiero poner en cola el archivo Javascript, debería usar plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] )
, pero usar __FILE__
aquí no funcionará, porque la ruta del archivo real 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 eliminar la primera parte y generar una URL relativa a la instalación de WordPress.
Respuesta:
El problema se puede solucionar parcialmente con un complemento obligatorio que se conecta al filtro plugins_url
.
No manejará todos los demás casos en los que se plugin_basename()
, como register_activation_hook()
y co.
Más información: http://core.trac.wordpress.org/ticket/16953