Obtener una ruta a un complemento diferente

10

Para obtener la ruta de acceso a un complemento, puede usar plugin_dir_path(__FILE__) , pero obviamente esto debe llamarse desde el complemento.

¿Cómo puede confiablemente obtener la ruta al complemento B ( pluginb/pluginb.php ) desde el complemento A?

Editar: se asume que sabes la bala del complemento que estás buscando (en realidad, puedes obtenerlo de get_plugins() ). Pero me gustaría que funcione en general.

    
pregunta Stephen Harris 10.11.2012 - 13:43

3 respuestas

8

Mi mejor conjetura sería:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

Sin embargo, el peligro aquí sigue siendo la suposición del "nombre base" del complemento: un complemento bien escrito seguirá funcionando incluso cuando se haya cambiado el nombre de su directorio o archivo principal (por cualquier motivo).

Lo que se remonta a mi comentario original, dependiendo de a cual se refiere este complemento de terceros, muchos autores definen sus propios métodos / constantes para mantener la ruta del complemento, tendría sentido verificar por su existencia & use estos en su lugar (si están disponibles).

    
respondido por el TheDeadMedic 10.11.2012 - 14:41
2

Entonces, un método es llamar a plugin_dir_path() dentro del complemento actual y reemplazar su propio nombre de directorio de complementos con ese de la bala del complemento que estás buscando ( pluginb/pluginb.php ):

Entonces, dentro de nuestro complemento plugina/plugina.php ,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';
    
respondido por el Stephen Harris 10.11.2012 - 14:51
0

Use WP_PLUGIN_DIR constante en su complemento A, por ejemplo:

include_once(WP_PLUGIN_DIR.'/pluginb/pluginb.php');

Información adicional: enlace

    
respondido por el Harkály Gergő 08.05.2017 - 17:30

Lea otras preguntas en las etiquetas