2012-11-12 7 views
5

पर कॉल करें मैं बहु फाइलों के साथ एक प्लगइन लिखने की कोशिश कर रहा हूं, मुझे यकीन है कि मैंने बिना किसी समस्या के पहले किया था लेकिन अब मुझे विषय में समस्या है ।वर्डप्रेस प्लगइन में एकाधिक फाइलों का उपयोग करें - अपरिभाषित फ़ंक्शन add_action()

मुख्य प्लगइन फ़ाइल मैं एक फ़ाइल नाम शामिल में

- YDP-includes.php, YDP-includes.php मैं सभी फाइलों को मैं इस तरह चाहता था शामिल के अंदर:

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

लेकिन मैं कर रहा हूँ प्राप्त करना: घातक त्रुटि: अपरिभाषित फ़ंक्शन में कॉल करें add_action() फ़ाइलों में शामिल हैं, लेकिन किसी कारण से मैं इस समय नहीं देख सकता कि इस समय वर्डप्रेस उन्हें एक प्लगइन पैकेज और अनदेखा के अंदर प्रत्येक वर्डप्रेस फ़ंक्शन के रूप में नहीं देखता है।

एकाधिक फाइल वर्डप्रेस प्लगइन विकसित करने का एक और सबसे अच्छा अभ्यास तरीका है? मैं क्या गलत कर रहा हूँ?

धन्यवाद

+0

यह सब के साथ एक वर्ग बनाने के लिए बेहतर है कार्य, जब संभव हो, या विशिष्ट कार्यों के साथ कई वर्गों। ¿क्या शामिल कार्यों के साथ शामिल फ़ाइलों का उपयोग करने का कोई कारण है? उन फ़ाइलों के स्थान के आधार पर, WP प्लगइन के हिस्से के रूप में उन्हें पहचान नहीं सकता है। –

उत्तर

5

पीएचपी include में एक statement not a function है।

तो यह

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

होना चाहिए या सही

<?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 अर्थपूर्ण होने के लिए, फ़ाइल सहित दोनों विधियां मान्य हैं। Require_once की सिफारिश करने के लिए +1। :] –

1

उपयोग plugin_dir_path(__FILE__); अपने प्लगइन की फ़ाइलों को प्राप्त करने के लिए किया जाना है। नीचे का प्रयोग करें कोड संदर्भ:

$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

त्रुटि संदेश के आधार पर, ऐसा लगता है कि जो गलत है, सीधे प्लगइन फ़ाइल तक पहुँचने का प्रयास कर रहे हैं लगता है। वर्डप्रेस सामने के नियंत्रक डिजाइन पैटर्न का उपयोग करता है, जिसका अर्थ है कि आप इस तरह अपनी फ़ाइलें करना चाहते करने जा रहे हैं:

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

मेरी-प्लगइन-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 
} 

वह एक वर्डप्रेस एडमिन मेनू आइटम जोड़ देगा, और आवश्यक फाइल लोड करेगा। तुम भी, अब शामिल फाइलों के अंदर अधिक फ़ाइलों की आवश्यकता के लिए सक्षम हो भी निरंतर MY_PLUGIN_PATH

देखें का उपयोग कर लेंगे:

add_menu_page plugin_dir_path()

संबंधित मुद्दे