La documentación de WordPress para la determinación de plugins y directorios de contenido establece que:
WordPress hace uso de las siguientes constantes al determinar la ruta al contenido y a los directorios de complementos. Estos no deben ser utilizados directamente por complementos o temas , pero se enumeran aquí para completar.
Continúa enumerando WP_CONTENT_DIR
y WP_PLUGIN_DIR
entre las constantes que los desarrolladores de temas y complementos no deberían usar, presumiblemente debido a esto:
WordPress permite a los usuarios colocar su directorio de contenido de wp donde quieran, por lo que nunca debe suponer que los complementos estarán en wp-content / plugins, o que las cargas estarán en wp-content / uploads, o que los temas estarán en wp- contenido / temas.
Mark Jaquith también comenta aquí que esas constantes no deben usarse:
No use WP_PLUGIN_URL o WP_PLUGIN_DIR; es posible que los complementos no estén en el directorio de complementos.
Entonces, ¿cuál es la forma aceptada de hacer referencia a la ruta completa a los complementos, wp-content y carpetas de temas sin usar estas constantes?
Como un simple ejemplo, para generar la ruta completa de todos los complementos instalados, puedo hacer esto:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
Lo que produce una lista como esta:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Es posible que desee hacer esto si estaba escribiendo un complemento para permitir al usuario archivar selectivamente complementos como parte de una copia de seguridad del sitio, por ejemplo).
Si el uso WP_PLUGIN_DIR
es incorrecto, ¿cuál es la alternativa sugerida? No hay un equivalente wp_upload_dir()
para los complementos, los temas y la carpeta wp-content que puedo encontrar, lo que hace que la referencia a los directorios raíz de plugins y temas potencialmente errantes sea problemática.
WP_PLUGIN_DIR
, de ahí mi pregunta aquí.