Cum să incluzi fișierul php al unui plugin în fișierul functions al altui plugin

22 aug. 2012, 11:56:58
Vizualizări: 22.8K
Voturi: 9

Am nevoie să personalizez rezultatul shortcode-ului din plugin-ul A folosind o funcție din plugin-ul B. Așa că modific funcția shortcode din plugin-ul A inserând o condiție pentru a verifica valoarea funcției din plugin-ul B, dar trebuie să includ fișierul php care conține această funcție. Am încercat toate variantele require_once, require și include dar primesc următoarele erori:

Când folosesc require_once('../../pluginname/pluginfunctions.php');

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

Când folosesc include(WP_PLUGIN_URL . '/pluginname/pluginfunctions.php');

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

Care este modalitatea corectă?

0
Toate răspunsurile la întrebare 3
2

Primul mesaj de eroare înseamnă că există restricții configurate pe server care limitează locațiile din care poți include fișiere. Ai putea încerca cu

require_once ABSPATH . '/wp-content/plugins/pluginname/pluginfunctions.php';

dar nu sunt sigur dacă va funcționa.

Cu cel de-al doilea include, încerci să incluzi un URL, ceea ce este dezactivat pe server din motive de securitate.

Însă, de ce ai nevoie să incluzi funcția din pluginul B? Dacă pluginul B este prezent, înseamnă că probabil este activat, ceea ce înseamnă că poți folosi funcția direct din pluginul A fără a fi nevoie să incluzi fișierul în mod specific.

22 aug. 2012 12:10:03
Comentarii

Hei, mulțumesc pentru răspuns! Aceasta ar putea fi singura metodă pe care nu am testat-o și funcționează! Nu știu cu adevărat de ce funcția nu funcționa fără includerea fișierului care o susține. Este posibil ca plugin-ul B să nu fie încă încărcat când plugin-ul A are nevoie de fișierul său? Oricum, mulțumesc pentru ajutor!

vadims vadims
22 aug. 2012 13:29:06

Ar trebui să folosești require_once WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . 'plugin-name' etc, deoarece directorul wp-content poate fi redenumit.

Keith Mifsud Keith Mifsud
24 iul. 2020 15:29:01
0

Funcția corectă de utilizat este: plugin_dir_path();

Exemplu:

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

Dacă te simți leneș, ai putea face și

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

Aceasta ajută dacă preferi să păstrezi liniile de cod scurte, dar nu este foarte diferit de răspunsul lui pbd.

8 iun. 2016 23:03:31
Comentarii

Te rog… folosește funcția corectă: plugin_dir_path() în loc să folosești constante hardcodate care nu sunt destinate să fie utilizate de teme și plugin-uri.

kaiser kaiser
8 iun. 2016 23:36:41