कस्टम मेटा बॉक्स मान और आवश्यक फ़ील्ड मान्य करना


16

कुछ ऐसा जो मैंने कभी कवर नहीं किया है, यह पुष्टि करने का सबसे अच्छा तरीका है कि विशिष्ट फॉर्म फ़ील्ड कस्टम पोस्ट प्रकार मेटा बॉक्स के लिए सही तरीके से भरे गए हैं।

मैं किसी भी मेटाबॉक्स के लिए कस्टम फ़ील्ड को मान्य करने के लिए सबसे अच्छी तरह से विशेषज्ञ राय प्राप्त करना चाहता हूं जो कोई भी बना सकता है। मेरी रुचि है:

  • पोस्ट प्रकाशित / अपडेट होने से पहले क्षेत्र सत्यापन सुनिश्चित करता है
  • एक वर्ग / कोड का उपयोग करना जो अन्य वर्डप्रेस जावास्क्रिप्ट के साथ संघर्ष नहीं करता है
  • आपको विशिष्ट फ़ील्ड को आवश्यकतानुसार परिभाषित करने की अनुमति देता है जबकि अन्य वैकल्पिक हो सकते हैं
  • ईमेल प्रारूप जैसी चीजों के लिए regex सहित अनुकूलन नियमों के आधार पर क्षेत्रों को मान्य करें
  • किसी भी त्रुटि / नोटिस के दृश्य प्रदर्शन को नियंत्रित करें

अग्रिम में धन्यवाद!

जवाबों:


21

सबसे आसान तरीका जावास्क्रिप्ट सत्यापन को jQuery Validate प्लगइन के माध्यम से जोड़ना है । यहाँ सबसे बुनियादी walkthrough है:

अपने add_meta_box कॉल के पास, jQuery Validate प्लगइन के साथ-साथ अपनी सरल स्क्रिप्ट के लिए JS फ़ाइल भी शामिल करें:

add_action('admin_enqueue_scripts', 'add_my_js');   
function add_my_js(){    
  wp_enqueue_script('my_validate', 'path/to/jquery.validate.min.js', array('jquery'));
  wp_enqueue_script('my_script_js', 'path/to/my_script.js');
}

फिर my_script.js में निम्नलिखित शामिल हैं:

jQuery().ready(function() {
    jQuery("#post").validate();
});

यह पोस्ट फॉर्म पर सत्यापन को सक्षम करेगा। फिर add_meta_box कॉलबैक में जहां आप कस्टम फ़ील्ड्स को परिभाषित करते हैं, आप प्रत्येक फ़ील्ड के लिए "आवश्यक" वर्ग जोड़ेंगे, जिसे आप मान्य करना चाहते हैं, जैसे:

<input type="text" name="my_custom_text_field" class="required"/>

पोस्ट को सहेजने / प्रकाशित / अपडेट किए जाने पर उनकी कक्षा में "आवश्यक" सभी फ़ील्ड मान्य किए जाएंगे। अन्य सभी सत्यापन विकल्प (नियम, त्रुटि स्टाइल आदि) दस्तावेज़ में सेट किए जा सकते हैं। my_script .js में पहले से ही कार्य कर रहा है; सभी विकल्पों के लिए jQuery मान्य डॉक्स की जाँच करें।


धन्यवाद, मैं इसे कल एक कोशिश दूंगा लेकिन क्या आप बता सकते हैं कि अलग-अलग सत्यापन कैसे करें। उदाहरण के लिए, एक सही ईमेल पते के लिए मान्य करना, यह सत्यापित करना कि कम से कम XX वर्णों से अधिक नहीं हैं, कि एक फॉर्म फ़ील्ड भर गया है ... जैसी चीजें?
NetConstructor.com 8

इसके अलावा, क्या पोस्ट को सहेजने / अद्यतन करने से पहले यह मान्य है? यदि नहीं, तो मैं यह कैसे कर सकता हूं?
NetConstructor.com

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

मैंने इस समाधान को लागू किया है और यह बहुत ही आशाजनक है, एक समस्या यह है कि मैं 'सबमिटहैंडलर' में क्या डालूं? Jquery.validate के साथ सत्यापन के बाद, Wordpress कुछ भी नहीं करता है (नटखट को बचाने के लिए एनिमेटेड स्थिति में रहता है)। मैं बच्चे को वापस WP कैसे दे सकता हूं?
माइक 23

2
यदि आप किसी आवश्यक फ़ील्ड के खाली होने (या कुछ अन्य सत्यापन विफल होने) पर प्रकाशित बटन को वापस अपनी सामान्य स्थिति में लाने का प्रयास कर रहे हैं, तो आपको सबमिटहैंडलर के साथ कुछ भी करने की आवश्यकता नहीं होनी चाहिए; सत्यापन के विफल होने पर बटन को बदलने के लिए केवल मान्य () कोड को संपादित करें। यह काम करता है: jQuery ("# ​​पोस्ट")। सत्यापित करें ({अमान्यहैंडलर: फ़ंक्शन () {jQuery ('# पब्लिश')। हटाने के लिए ('बटन-प्राथमिक-अक्षम'); jQuery ('# ajax- लोडिंग') css। ('दृश्यता', 'छिपा हुआ');}});
डैनब्लकर

2

पूरा मूल कोड jQuery मान्यता जोड़ने के लिए:

  1. सत्यापन स्क्रिप्ट संलग्न करें। मुझे लगता है कि jQuery पहले से ही enqued है।

    add_action('admin_enqueue_scripts',function($id){
        $validation',$validation_js_url = #your validation.js source;
        wp_register_script( 'validation',$validation_js_url,array(),'',true );
        wp_enqueue_script( 'validation' );
    });
  2. Js फ़ाइल या स्क्रिप्ट टैग में:

    jQuery(document).ready(function($){
        var form = $("form[name='post']");
        $(form).find("input[type='submit']").click(function(e){
            e.preventDefault();
            $(form).validate();
    
            if($(form).valid())
            {
                $("#ajax-loading").show();
                $(form).submit();
            }else{
                $("#publish").removeClass().addClass("button-primary");
                $("#ajax-loading").hide();
            }
        });
    });
  3. किया हुआ :)


सर्वर साइड के बारे में क्या?
NetConstructor.com 6:28

2

मैंने इस कोड का उपयोग किया, बहुत उपयोगी, बस बदला:

$(form).find("input[type='submit']").click(function(e){

सेवा:

$(form).find("#publish").click(function(e){

'क्योंकि अगर आपके पास मुख्य फॉर्म के अंदर एक और फॉर्म है तो यह स्क्रिप्ट शुरू करता है।

तथा:

$(form).submit();

सेवा:

$(this).submit();

'क्योंकि पहली पंक्ति केवल पोस्ट को ड्राफ्ट के रूप में सहेजती है और आप इसे प्रकाशित नहीं कर सकते।

यहाँ सब कुछ लिखा है: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/


2

मुझे PHP कोड का उपयोग करते हुए वैध मेटाबॉक्स क्षेत्रों की समस्या को हल करने के लिए यह दृष्टिकोण मिला

https://tommcfarlin.com/post-meta-data-error-messages/

आशा है कि यह आपकी मदद करेगा (समान परिदृश्य में मेरे लिए काम करता है)


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक हिस्सों को यहां शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
गेब्रियल

0

यदि आप सर्वर साइड को मान्य करने में सक्षम होना चाहते हैं, तो सबसे आसान विकल्प यह है कि आप अपने कस्टम फील्ड लेआउट को परिभाषित करने के लिए एडवांस्ड कस्टम फील्ड्स का उपयोग करें और फिर वर्डप्रेस एडमिनिस्‍ट्रेशन में प्रति क्षेत्र में अपना सत्यापन सेट करने के लिए मान्य फ़ील्ड ऐड-ऑन करें।

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