2012-11-12 10 views
5

Próbuję napisać wtyczkę z wieloma plikami, jestem pewien, że zrobiłem to wcześniej bez problemu z , ale teraz mam problem w temacie .używać wielu plików w wtyczce wordpress - wywołanie niezdefiniowanej funkcji add_action()

w głównym pliku wtyczki i zawierał nazwę pliku - YDP-includes.php, wewnątrz YDP-includes.php włączyłem wszystkie pliki Chciałem tak:

<?php 
include(dirname(__FILE__) .'/1.php'); 
include(dirname(__FILE__) .'/2.php'); 
include(dirname(__FILE__) .'/3.php'); 
include(dirname(__FILE__) .'/4.php'); 
?> 

ale jestem get: Błąd krytyczny: wywołanie niezdefiniowanej funkcji add_action() pliki są uwzględniane, ale z jakiegoś powodu nie widzę w tej chwili wordpress nie widzi ich jako jednego pakietu wtyczek i każdej funkcji wordpress w środku ignorowane.

jest inny najlepszy sposób na opracowanie wielu plików Wordpress plugin? co robię źle?

dzięki

+0

Lepiej utworzyć klasę ze wszystkimi funkcje, jeśli to możliwe, lub kilka klas o określonych funkcjach. Czy istnieje jakiś powód, aby używać dołączonych plików z dołączonymi funkcjami? W zależności od położenia dołączonych plików, WP może nie rozpoznać ich jako części wtyczki. –

Odpowiedz

5

W PHP include jest statement not a function.

Tak powinno być

<?php 
include dirname(__FILE__) .'/1.php'; 
include dirname(__FILE__) .'/2.php'; 
include dirname(__FILE__) .'/3.php'; 
include dirname(__FILE__) .'/4.php'; 
?> 

lub być doskonały

<?php 
require_once dirname(__FILE__) .'/1.php'; 
require_once dirname(__FILE__) .'/2.php'; 
require_once dirname(__FILE__) .'/3.php'; 
require_once dirname(__FILE__) .'/4.php'; 
?> 
+1

-1, ponieważ są semantyczne, obie metody dołączania pliku są poprawne. +1 za polecenie require_once. :] –

1

Zastosowanie plugin_dir_path(__FILE__); aby uzyskać pliki swojej wtyczki. Zastosowanie odniesienia kod poniżej:

$dir = plugin_dir_path(__FILE__); 

require_once($dir.'1.php'); 

require_once($dir.'2.php'); 

require_once($dir.'3.php'); 

require_once($dir.'4.php'); 
3

Na podstawie komunikatu o błędzie, to brzmi jak próbujesz uzyskać dostęp do pliku bezpośrednio plugin, który jest nieprawidłowy. WordPress używa wzorca projektowego front-kontrolera, co oznacza, że ​​będziesz chciał mieć swoje pliki tak:

my-plugin-folder/my-plugin-name.php 
my-plugin-folder/includes/ydp-includes.php 
my-plugin-folder/includes/ydp-database.php 

Wewnątrz mojego-plugin-name.php:

//Get the absolute path of the directory that contains the file, with trailing slash. 
define('MY_PLUGIN_PATH', plugin_dir_path(__FILE__)); 
//This is important, otherwise we'll get the path of a subdirectory 
require_once MY_PLUGIN_PATH . 'includes/ydb-includes.php'; 
require_once MY_PLUGIN_PATH . 'includes/ydb-database.php'; 
//Now it's time time hook into the WordPress API ;-) 
add_action('admin_menu', function() { 
    add_management_page('My plugin Title', 'Menu Title', 'edit_others_posts', 'my_menu_slug', 'my_plugin_menu_page_content' 
}); 
//Php 5.3+ Required for anonymous functions. If using 5.2, create a named function or class method 

function my_plugin_menu_page_content() { 
    //Page content here 
} 

To doda element menu administratora WordPress i załaduje wymagane pliki. Będziesz także być w stanie wymagać więcej plików wewnątrz Dołączone pliki teraz, wykorzystując stałą MY_PLUGIN_PATH

Patrz także:

add_menu_page plugin_dir_path()

Powiązane problemy