Obtener el directorio de complementos de un tema


8

¿Alguien conoce una manera no hacky de obtener la ruta del directorio de complementos desde las funciones de un tema.php?

He utilizado plugin_dir_path ( FILE ), pero debido a que se invoca en el archivo functions.php del tema, devuelve la ruta a ese archivo. No es el directorio de complementos. Podría manipularlo en cadena y agregar la ruta de los complementos, pero eso se siente casi tan mal como codificar todo el camino.

Lo tengo funcionando usando:

require_once( ABSPATH .'/wp-content/plugins/ehu-events/event-widget.php' );

¡Pero sé que eso es tan antiguo y equivocado y probablemente me rechazarán de la comunidad de WordPress por usarlo!

¿Existe una función estándar de WordPress que pueda usar para esto?

Respuestas:


18

Quizás lo que estás buscando es:

WP_PLUGIN_DIR  // full path, no trailing slash
WP_PLUGIN_URL  // full url, no trailing slash

Ver documentación


1
Tenga en cuenta que hay filtros que pueden mover la ubicación a otro lugar. Esta podría ser la mejor apuesta, pero seguramente no es una suposición segura.
Kaiser

2
La documentación vinculada dice lo siguiente sobre las constantes: «No deben usarse directamente por complementos o temas, sino que se enumeran aquí para completarlas». Por lo tanto, probablemente no debería sugerirse como la solución, cuando el consejo es no usarlos en su tema.
Gchtr

8

Creo que esto puede ser más confiable que dependiendo de las constantes.

$url = plugins_url();
$path = parse_url($url);
var_dump($path['path']);

La razón por la que sospecho que puede ser más confiable es que la plugins_urlfunción considera tanto WPMU_PLUGIN_URLlas WP_PLUGIN_URLconstantes como las constantes y también respetará el plugins_urlfiltro.


1
Este es el método más no hacky y debería ser la mejor respuesta.
CGeorges

¿Qué pasa con los complementos contenidos en los temas?
brett
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.