Cómo incluir un archivo PHP de un plugin en el archivo de funciones de otro plugin

22 ago 2012, 11:56:58
Vistas: 22.8K
Votos: 9

Necesito personalizar la salida del shortcode del plugin A usando una función del plugin B. Por lo tanto, modifico la función del shortcode del plugin A insertando una condición para verificar el valor de la función del plugin B, pero necesito incluir el archivo PHP que contiene esta función. He probado require_once, require e include pero obtengo los siguientes errores:

Cuando uso require_once('../../pluginname/pluginfunctions.php');

Error Warning: require_once(): open_basedir restriction in effect. File(../../magicmembers/core/libs/functions/mgm_misc_functions.php) is not within the allowed path(s)

Cuando uso include(WP_PLUGIN_URL . '/pluginname/pluginfunctions.php');

Error Warning: include(): URL file-access is disabled in the server configuration

¿Cuál es la forma correcta?

0
Todas las respuestas a la pregunta 3
2

El primer mensaje de error indica que hay restricciones configuradas en el servidor sobre desde dónde se pueden incluir archivos. Podrías intentar con:

require_once ABSPATH . '/wp-content/plugins/nombre-del-plugin/funciones-del-plugin.php';

pero no estoy seguro de que funcione.

Con el segundo include estás intentando incluir una URL, lo cual está deshabilitado en el servidor por razones de seguridad.

Sin embargo, ¿por qué necesitas incluir la función del plugin B? Si el plugin B está presente significa que probablemente está activado, lo que a su vez implica que puedes usar la función directamente desde el plugin A sin necesidad de incluir específicamente el archivo.

22 ago 2012 12:10:03
Comentarios

¡Hola, gracias por tu respuesta! Este podría ser el único método que no he probado y ¡funciona! Realmente no sé por qué la función no estaba funcionando sin incluir el archivo que la soporta. ¿Es posible que el plugin B no se haya cargado todavía cuando el plugin A requiere su archivo? De todos modos, ¡gracias por tu ayuda!

vadims vadims
22 ago 2012 13:29:06

Deberías usar require_once WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . 'plugin-name' etc ya que el directorio wp-content puede ser renombrado.

Keith Mifsud Keith Mifsud
24 jul 2020 15:29:01
0

La función correcta a utilizar es: plugin_dir_path();

Ejemplo:

include_once plugin_dir_path( __FILE__ ).'plugin-functions.php';
8 jun 2016 23:39:28
1
-2

Si te sientes perezoso también podrías hacer

require_once( ABSPATH . PLUGINDIR .'/pluginname/pluginfunctions.php' );

Esto ayuda si prefieres mantener tus líneas de código cortas pero no es muy diferente de la respuesta de pbd.

8 jun 2016 23:03:31
Comentarios

Por favor … utiliza la función adecuada: plugin_dir_path() en lugar de codificar directamente constantes que no están diseñadas para ser usadas por temas y plugins.

kaiser kaiser
8 jun 2016 23:36:41