Özel Meta Kutu Değerlerini ve Zorunlu Alanları Doğrulama


16

Daha önce hiç görmediğim bir şey, belirli yazı alanlarının özel yazı tipi meta kutuları için doğru doldurulduğunu doğrulamanın en iyi yoludur.

Bir oluşturabilirsiniz herhangi bir meta kutuları için özel alanları doğrulamak için en iyi nasıl uzman görüş almak istiyorum. İlgim:

  • alan doğrulamasının yayın yayınlanmadan / güncellenmeden önce gerçekleşmesini sağlamak
  • diğer wordpress javascriptleriyle çakışmayan bir sınıf / kod kullanma
  • diğerleri isteğe bağlı olabilirken belirli alanları gerektiği gibi tanımlamanıza olanak tanır
  • alanları, e-posta biçimi gibi şeyler için normal ifade de dahil olmak üzere özelleştirilebilir kurallara göre doğrulayın
  • herhangi bir hata / bildirimin görsel görüntüsünü kontrol etme

Şimdiden teşekkürler!

Yanıtlar:


21

En kolay yol, jQuery Validate eklentisi aracılığıyla Javascript doğrulaması eklemektir . İşte en temel izlenecek yol:

Add_meta_box çağrınızın yanında, basit komut dosyanız için jQuery Validate eklentisinin yanı sıra bir JS dosyası da sıralayın:

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');
}

Ardından my_script.js dosyasına aşağıdakileri ekleyin:

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

Bu, gönderi formunda doğrulamayı etkinleştirir. Ardından, özel alanları tanımladığınız add_meta_box geri çağrısında, doğrulamak istediğiniz her alan için şu şekilde "zorunlu" bir sınıf eklersiniz:

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

Sınıflarında "zorunlu" olan tüm alanlar, yayın kaydedildiğinde / yayınlandığında / güncellendiğinde doğrulanır. Diğer tüm doğrulama seçenekleri (kurallar, hata şekillendirme, vb.) Belgede ayarlanabilir. Zaten my_script.js fonksiyonunda; tüm seçenekler için jQuery Doğrulama belgelerine bakın.


Teşekkür ederim, yarın bunu deneyeceğim ama lütfen farklı doğrulamaların nasıl yapılacağını açıklar mısınız? Örneğin, doğru bir e-posta adresini doğrulamak, en fazla XX karakterden veya bir form alanının doldurulduğundan emin olmak ... böyle şeyler mi?
NetConstructor.com

Ayrıca, yayın kaydedilmeden / güncellenmeden önce bu doğrulanır mı? Değilse, bunu nasıl yapabilirim?
NetConstructor.com

(Cevabımda bağlantılı olan) jQuery Validation eklentisi için örnekler ve belgeler, tüm bunları nasıl yapacağınızı gösterecektir. Doğrulama, varsayılan olarak gönderildiğinde gerçekleşir, ancak özel alanlarınız için herhangi bir form öğesi için bulanıklaştırma veya değişiklik durumunda tetikleyebilirsiniz.
danblaker

Bu çözümü uyguladım ve çok umut verici görünüyor, bir sorun olsa da, 'sendHandler'a ne koyacağım? Jquery.validate ile doğrulamadan sonra, Wordpress hiçbir şey yapmaz (buttun'u kaydet animasyonlu durumda kalır). Bebeği WP'ye nasıl geri gönderebilirim?
mike23

2
Gerekli bir alan boş olduğunda (veya başka bir doğrulama başarısız olduğunda) Yayınla düğmesini normal durumuna döndürmeye çalışıyorsanız, sendHandler ile herhangi bir şey yapmanıza gerek yoktur; doğrulama başarısız olduğunda düğmeyi değiştirmek için validate () kodunu düzenlemeniz yeterlidir. Bu çalışır: jQuery ("# ​​post"). Validate ({invalidHandler: function () {jQuery ('# yayınla'). RemoveClass ('düğme-birincil-devre dışı'); jQuery ('# ajax-loading'). Css ('görünürlük', 'gizli');}});
danblaker

2

JQuery Doğrulaması eklemek için Temel Kodun Tamamı:

  1. Doğrulama komut dosyasını sıraya alın. JQuery zaten enqued varsayalım.

    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 dosyasında veya kod etiketinde:

    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. Tamamlandı :)


Sunucu tarafında ne olacak?
NetConstructor.com

2

Bu kodu kullandım, çok yararlı, justa değişti:

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

Kime:

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

Çünkü ana formun içinde başka bir form varsa, komut dosyasını başlatın.

Ve:

$(form).submit();

Kime:

$(this).submit();

Çünkü ilk satır yayını yalnızca taslak olarak kaydeder ve artık yayınlayamazsınız.

Burada her şeyi yazdı: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/


2

Ben PHP kodu kullanarak metabox alanları doğrulama sorunu çözmek için bu yaklaşımı buldum

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

Umarım bu yardım eder (benim için benzer bir senaryoda çalışır)


Bu bağlantı soruyu cevaplayabilirken, cevabın önemli kısımlarını buraya eklemek ve bağlantıyı referans olarak sağlamak daha iyidir. Bağlantı verilen sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir.
Gabriel

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.