2012-11-12 9 views
5

Çok dosya içeren bir eklenti yazmaya çalışıyorum, eminim önce bir sorun olmadan yaptım ama şimdi konuyla ilgili sorunum var .wordpress eklentisinde birden fazla dosya kullan - Tanımlanmamış işlev çağrısı add_action()

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

ama değilim: i böyle istediği tüm dosyaları dahil YDP-includes.php iç YDP-includes.php, - ı bir dosya adı dahil ana eklenti dosyasında

alma: Ölümcül hata: undefined işlevine çağrısı add_action() dosyaları içerir ama şu anda göremiyorum bir nedenle wordpress bunları bir eklenti paketi olarak görmüyor ve her wordpress fonksiyonu göz ardı ediliyor.

Birden çok dosya wordpress eklentisi geliştirmek için başka bir en iyi uygulama yolu var mı? Neyi yanlış yapıyorum?

sayesinde PHP include yılında

+0

Her bir sınıf oluşturmak daha mümkünse işlevler veya her biri belirli işlevlere sahip birkaç sınıf. Included Dahil edilen dosyaların dahil edilmiş dosyaları kullanmak için herhangi bir sebep var mı? İçerilen dosyaların yerlerine bağlı olarak, WP bunları eklentinin bir parçası olarak tanımayabilir. Semantik olduğu için –

cevap

5

bir statement not a function olduğunu.

Yani

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

olmalıdır veya eklentinin dosyalarını almak için kullanın plugin_dir_path(__FILE__);

<?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, dosya dahil her iki yöntem de geçerlidir. Require_once öğesini önermek için +1. :] –

1

mükemmel olmasını. Aşağıdaki Kullanım kod referansı: hata mesajı dayanarak

$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

, bu yanlış olan doğrudan eklenti dosyasını erişmeye çalışıyorsanız gibi geliyor. my-eklenti-name.php içi

my-plugin-folder/my-plugin-name.php 
my-plugin-folder/includes/ydp-includes.php 
my-plugin-folder/includes/ydp-database.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 
} 

WordPress böyle dosyalarınızı olmasını istiyorum gidiyoruz anlamına gelir bir ön kontrolör tasarım deseni kullanır Bu bir WordPress yönetici menü öğesi ekleyecek ve gerekli dosyaları yükleyecektir. Ayrıca da sabit MY_PLUGIN_PATH

See kullanarak, artık ürünle birlikte dosyaların içinde daha fazla dosya gerektirir mümkün olacak:

add_menu_page plugin_dir_path()