नए ब्लॉग सेटअप फॉर्म में कस्टम ब्लॉग विकल्प कैसे जोड़ें?


17

एक साधारण पर्याप्त आवश्यकता की तरह लगता है, लेकिन मैं संघर्ष कर रहा हूँ:

  1. मैं "नई साइट जोड़ें" के लिए एक विकल्प फ़ील्ड जोड़ना चाहता हूं
    एक साधारण पाठ विकल्प ठीक है। मैं यह कैसे करु?

  2. साइट बनने पर मुझे इस कस्टम ब्लॉग विकल्प को सहेजने की आवश्यकता है।

    मुझे पता है कि मैं 'wpmu_new_blog' हुक का उपयोग कर सकता हूं, जो $metaआपूर्ति किए गए विकल्पों के साथ चर को पार करता है , लेकिन मैं सोच रहा हूं कि क्या यह सब एक चरण में करने का एक तरीका है, इसलिए मुझे एक और DB क्वेरी, या इससे भी बुरा प्रदर्शन नहीं करना है , ओवरराइड / पूरी साइट निर्माण प्रक्रिया की जगह?

टिप्पणियाँ:

मैं एक मल्टीसाइट सेटअप के साथ WP 3.3.1 का उपयोग कर रहा हूं। मैं एक प्लगइन लिख रहा हूं जो उन सभी साइटों को सूचीबद्ध करता है जो निर्दिष्ट कस्टम फ़ील्ड मान से मेल खाते हैं (चलो इसे "प्रकार" कहते हैं)।

इसके अलावा, मैं एक अनुभवी PHP डेवलपर हूं, लेकिन मैं अभी भी वर्डप्रेस हैकिंग के लिए अपेक्षाकृत नया हूं, इसलिए मान लें कि मैं अभी तक सभी विभिन्न WP फ़ंक्शन और हुक से परिचित नहीं हूं।

जवाबों:


9

दो उत्तरों (*) में शामिल होने पर, मैंने एक नई साइट (फ्रंट और बैक एंड) रजिस्टर करते समय कस्टम मेटा विकल्प जोड़ने के लिए एक प्लगइन किया है और साइट स्क्रीन में एक कॉलम में इसके मूल्य को प्रदर्शित करता है।

मल्टीसाइट श्रेणियाँ

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें ...

(*) कोड संदर्भ

1 - वर्डप्रेस + मल्टीसाइट: नेटवर्क व्यवस्थापक में नई साइट फ़ॉर्म जोड़ने के लिए कस्टम ब्लॉग विकल्प कैसे जोड़ें? , @ डेनिसग द्वारा

2 - मल्टीसाइट: नए ब्लॉग सेटअप फॉर्म में कस्टम ब्लॉग विकल्प कैसे जोड़ें? , @tbuteler द्वारा

add_action('wpmu_new_blog', 'add_new_blog_field');दो जवाब से विलय हो गया।

मैं पहले से ही अपने मल्टीसाइट में आईडी कॉलम कोड का उपयोग कर रहा था, और प्लगइन में श्रेणी कॉलम भी जोड़ा।

[अपडेट करें]

श्रेणी स्तंभ को क्रमबद्ध बनाने का प्रयास किया गया, लेकिन यह लगभग असाध्य लगता है ...

इस प्रश्न / उत्तर को देखें: फिल्टर 'अनुरोध' और 'parse_query' साइट्स में फायरिंग नहीं।

[अद्यतन २]

मैंने प्लगइन को फिर से काम किया है और अब श्रेणियां क्रमबद्ध हैं। प्लगइन का पहला संस्करण अब एक Gist है (शुरुआत में अपडेट किया गया लिंक) और नया संस्करण GitHub में रहता है।


+1 अरे यह बहुत अच्छा है, ब्रसोफिलो! मैं इसे एक कोशिश देने के लिए उत्सुक हूँ :)
ब्रायन लैस

8

मल्टीसाइट साइनअप प्रक्रिया को ट्वीक करना आसान बात नहीं है। अन्य प्रक्रियाओं के विपरीत, इसके साथ खेलने के लिए कई हुक हैं, लेकिन वे भारी अनुकूलन के लिए बहुत अच्छी तरह से एक साथ नहीं आते हैं, इसलिए मैं अपनी निराशा को समझता हूं।

अगर मैं सही ढंग से समझता हूं, तो यह जटिल नहीं है कि आप क्या चाहते हैं, हालांकि यह वर्डप्रेस के डिफ़ॉल्ट व्यवहार के बहुत कुछ किए बिना एक-चरणीय समाधान नहीं हो सकता है, मुख्यतः क्योंकि साइनअप (यानी जब आपका उपयोगकर्ता कस्टम जानकारी सबमिट करेगा) और सक्रियण ( (जब नया ब्लॉग वास्तव में बनाया जाएगा) अलग से होगा।

यहां एक बहुत ही मोटा कोड है जिसे आपको शुरू करने की आवश्यकता होगी। उम्मीद है कि यह आपको सही दिशा में आगे बढ़ाता है:

// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
    <label>An extra field</label>
    <input type="text" name="extra_field" value="" />
<?php
}

// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
    if(isset($_REQUEST['extra_field'])) {
        $meta['extra_field'] = $_REQUEST['extra_field'];
    }
    return $meta;
}

// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
    update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}

याद रखो:

  1. यदि आप प्लग-इन के माध्यम से इनपुट को फ़िल्टर करना चाहते हैं, तो मैं प्रदान किए गए विकल्पों को लॉक करने के लिए चुनिंदा इनपुट का उपयोग करने का दृढ़ता से सुझाव दूंगा;
  2. चूँकि कुछ फ़ील्ड आवश्यक हैं और पंजीकरण के दौरान सत्यापन के माध्यम से गुजरते हैं (न्यूनतम वर्ण, साइट के नाम, ब्लैक लिस्टेड नाम, इत्यादि के लिए वर्णों को अस्वीकृत), मैं पहले इनपुट पर मूल्य को पॉप्युलेट करते समय $ _REQUEST वैश्विक पर आपके अतिरिक्त क्षेत्र की जाँच करने का सुझाव दूंगा। फ़ंक्शन, ताकि उपयोगकर्ता अपने इनपुट को उस स्थिति में न खोए जब उसने वर्डप्रेस के डिफ़ॉल्ट फ़ील्ड का मान ठीक करने के लिए वापस भेजा है;
  3. आप स्पष्ट रूप से अंतिम फ़ंक्शन के विचार को बदल सकते हैं जो भी आपके प्लग-इन के अनुरूप है, लेकिन फ़ील्ड का मूल्य अब उस अंतिम फ़ंक्शन के भीतर से उपलब्ध होगा, जो आपको अपने रास्ते में मदद करनी चाहिए।

अंतिम नोट पर, यदि आप बाद में सभी मौजूदा ब्लॉगों से सभी 'extra_field' मूल्यों को संसाधित करना चाहते हैं, तो मैं एक मेज पर जानकारी संग्रहीत करने का सुझाव देना चाहूंगा; हो सकता है कि उस अंतिम फ़ंक्शन के update_site_optionबजाय उपयोग करें update_blog_option, जो उस मामले में आवश्यक नहीं है, ब्लॉग_आईडी को खो देता है।

वैसे भी, हमें पता है कि यह कैसे जाता है, और शुभकामनाएँ!


महान उपयोगी उत्तर, बहुत सारी जानकारी जो मैं यहाँ अच्छे उपयोग के लिए रख सकता हूँ :) मैं ब्रसोफिलो को सर्वश्रेष्ठ उत्तर दे रहा हूँ, क्योंकि आपको पहले ही इनाम मिल चुका है, और दोनों महान उत्तर हैं।
ब्रायन लैस

बहुत बढ़िया जवाब यहाँ, धन्यवाद। यदि मुझे अद्यतन_blog_option () चलाने की अनुमति नहीं है तो मेरे अतिरिक्त फ़ील्ड को साइट विकल्पों में क्यों जोड़ा जाता है? मैं process_extra_field_on_blog_signup () और निकास () के अंदर के मूल्यों को प्रतिध्वनित करता हूं और यह काम करता है, extra_filed विकल्पों में जोड़ा गया था। लेकिन जब मैं इसे बिना किसी निकास के () के माध्यम से चलाता हूं, तो extra_field को wp_xx_options में नहीं जोड़ा जाता है।
उस आर्यन

@thatryan, यह अजीब है ... या तो कुछ डेटाबेस से मूल्यों को हटा रहा है (संभावना नहीं है), या वे बिल्कुल भी नहीं जोड़े जा रहे हैं। कुछ और परीक्षण चलाने की कोशिश करें और एक प्रश्न पोस्ट करने के लिए स्वतंत्र महसूस करें यदि आपको यह पता लगाने में समस्या हो रही है। ध्यान रखें कि यह उत्तर संभवतः वर्डप्रेस 3.5 या उससे पहले के लिए था, इसलिए हो सकता है कि उन्होंने नए संस्करणों में कुछ बदला हो ...
टॉमस बुटेलर

-1

यदि आप साइट-new.php कोड को देखते हैं तो आपको अपना उत्तर पहले ही मिल जाएगा - और यह नहीं है!

यह देखने के लिए कोई भी शर्तें नहीं हैं कि फॉर्म में कुछ भी जोड़ा जा सकता है या नहीं। हालाँकि, मैंने फ़ाइल का अध्ययन किया और विश्वास किया कि आपको साइट-new.php में मैन्युअल रूप से इस इनपुट फ़ील्ड को जोड़ना होगा और wpmu_create_blog फ़ंक्शन में मेटा के रूप में मान को पास करना होगा जो आपको लाइन 77 के पास कहीं मिल जाएगा। नहीं पढ़े फ़ंक्शन क्या करता है, यह वह हो सकता है जिसे आप खोज रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.