में डायनामिक फ़ंक्शन नाम मैं वर्डप्रेस में "कस्टम पोस्ट प्रकार" के निर्माण को सरल बनाना चाहता हूं क्योंकि यह एक ही स्क्रिप्ट के माध्यम से जाने के लिए कठिन है और सभी कस्टम पोस्ट प्रकार नामों को मैन्युअल रूप से ओवरराइड बदलता है।php
सीपीटी नाम युक्त चर बनाने और इसे हर जगह इसका उपयोग करने के द्वारा हासिल करना काफी आसान है। इस तरह, मुझे बस इतना करना है कि स्क्रिप्ट की शुरुआत में चर घोषित करें और बाकी की देखभाल करनी चाहिए।
एकमात्र मुद्दा यह है कि, इसे काम करने के लिए, मुझे स्क्रिप्ट के अंदर प्रत्येक फ़ंक्शन के सामने सीपीटी नाम को उपसर्ग करने की भी आवश्यकता है और ऐसा लगता है कि फ़ंक्शन नाम में एक चर का उपयोग करना आसान नहीं है या PHP में भी अनुशंसित नहीं है ।
तो मैं इसे कैसे हल कर सकता हूं?
यहाँ नीचे एक उदाहरण बनाने के लिए है यह स्पष्ट:
$prefix = 'news';
function news_custom_type_init()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
यह लगभग ठीक है और अगर केवल मैं गतिशील क्रम में समारोह का नाम बदलने सकता है में शब्द "समाचार" लिखने के लिए नहीं मानकीकृत किया जा सकता है इसके सामने लेकिन इसके बजाय "$ उपसर्ग" का उपयोग करें।
यह अच्छा हो सकता था लेकिन सिर्फ काम नहीं करता:
$prefix = 'news';
$functionName= $prefix."_custom_type_init";
function $functionName()
{
global $prefix;
register_post_type($prefix, array(
'labels' => array(
'name' => $prefix,
'singular_label' => $prefix,
'add_new' => 'Add',
...
));
register_taxonomy_for_object_type('category', $prefix);
}
add_action('init', $prefix.'_custom_type_init');
नाम करने के लिए होने मैन्युअल समारोह थोड़े मेरे प्रयास (विशेष रूप से जब स्क्रिप्ट इस तरह के कार्यों के दर्जनों एम्बेड) का मूल उद्देश्य को हराने ।
ऐसा करने का सबसे अच्छा तरीका क्या होगा?
पीएस: मैंने इसके बारे में बहुत कुछ किया और "stackoverflowed" लेकिन मुझे कोई ज़रूरत नहीं है जो मेरी ज़रूरतों को पूरा करता है और वर्डप्रेस त्रुटि संदेश उत्पन्न नहीं करता है।
धन्यवाद।
$function = $prefix . '_custom_type_init';
if(function_exists($function)) {
$function();
}
उपयोग करने के लिए मुझे यकीन है कि मैं अपने आप को स्पष्ट कर दिया है नहीं कर रहा हूँ (या शायद मैंने नहीं किया अपने बिंदु को समझें)। आपकी स्क्रिप्ट यह देखने के लिए जांचती है कि फ़ंक्शन पहले से मौजूद है या नहीं, इसके लिए फ़ंक्शन को मैन्युअल रूप से पहले स्थान पर बनाया जाना चाहिए था, है ना? मैं गतिशील रूप से एक मौजूदा फ़ंक्शन को "कॉल" करने की कोशिश नहीं कर रहा हूं, जो मैं करने की कोशिश कर रहा हूं वह उस कार्य को गतिशील रूप से "बनाना" है। इसे सरल बनाने के लिए, मेरी लिपि में, मैं बस कहीं से भी "समाचार" शब्द मिटाना चाहता हूं लेकिन पहले निर्देश से और स्क्रिप्ट को काम करने के लिए प्राप्त करना चाहता हूं। अगर मैं तुम्हें नहीं मिला, तो मुझे खेद है। – Baylock
यदि मैं सही ढंग से समझता हूं, तो आप "news_something" और "blog_something" जैसे कई फ़ंक्शन चाहते हैं। फिर आवश्यकतानुसार गतिशील रूप से कॉल करें। मैंने जो कोड प्रदान किया है उसे init() में बुलाया जाना चाहिए और कॉल करने के लिए फ़ंक्शन का चयन करना चाहिए। यदि आप चाहते हैं कि एक ही फ़ंक्शन को कई स्थानों से बुलाया जाए, तो मेरा मानना है कि आपको फ़ंक्शंस बनाने और उन्हें एक ही फ़ंक्शन कॉल करने की आवश्यकता है, क्योंकि उन्हें PHP में पंजीकृत होने की आवश्यकता है। – hexblot
आपकी मदद हेक्सबॉट के लिए धन्यवाद। मैंने अपने संदेश को एक गैर-कामकाजी उदाहरण के साथ अपने उद्देश्य की बेहतर समझ के लिए ऊपर संपादित किया। – Baylock