it-swarm.com.de

Überprüfen von benutzerdefinierten Meta-Box-Werten und erforderlichen Feldern

Was ich noch nie gesehen habe, ist die beste Methode, um zu überprüfen, ob bestimmte Formularfelder für benutzerdefinierte Post-Typ-Metafelder korrekt ausgefüllt sind.

Ich möchte Expertenmeinungen darüber einholen, wie benutzerdefinierte Felder für möglicherweise erstellte Metaboxen am besten validiert werden können. Mein Interesse gilt:

  • stellen Sie sicher, dass die Feldvalidierung erfolgt, bevor der Beitrag veröffentlicht/aktualisiert wird
  • verwendung einer Klasse/eines Codes, die/der nicht mit anderem WordPress-Javascript in Konflikt steht
  • mit dieser Option können Sie bestimmte Felder nach Bedarf definieren, während andere optional sein können
  • validieren Sie Felder basierend auf anpassbaren Regeln, einschließlich regulärer Ausdrücke für Dinge wie das E-Mail-Format
  • kontrollieren Sie die visuelle Anzeige von Fehlern/Hinweisen

Danke im Voraus!

15

Der einfachste Weg ist das Hinzufügen der Javascript-Validierung über das jQuery Validate-Plugin . Hier ist die grundlegendste Anleitung:

Rufen Sie neben Ihrem Aufruf von add_meta_box das Plugin jQuery Validate sowie eine JS-Datei für Ihr einfaches Skript auf:

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

Fügen Sie dann in my_script.js Folgendes ein:

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

Dadurch wird die Validierung auf dem Post-Formular aktiviert. Dann fügen Sie in dem Rückruf von add_meta_box, in dem Sie die benutzerdefinierten Felder definieren, eine "erforderliche" Klasse für jedes Feld hinzu, das Sie validieren möchten, wie folgt:

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

Alle Felder mit "Erforderlich" in ihrer Klasse werden validiert, wenn der Beitrag gespeichert/veröffentlicht/aktualisiert wird. Alle anderen Validierungsoptionen (Regeln, Fehlerstyling usw.) können in der Funktion document.ready in my_script.js festgelegt werden. Überprüfen Sie die jQuery Validate-Dokumente auf alle Optionen.

20
danblaker

Ich habe diesen Code benutzt, sehr hilfreich, nur geändert:

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

Zu:

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

Denn wenn Sie ein anderes Formular im Hauptformular haben, starten Sie das Skript.

Und:

$(form).submit();

Zu:

$(this).submit();

Weil die erste Zeile nur den Beitrag als Entwurf speichert und Sie ihn nicht mehr veröffentlichen können.

Alles hier geschrieben: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/

2
Ricky

Ich habe diesen Ansatz gefunden, um das Problem der Validierung von Metabox-Feldern mithilfe von PHP-Code zu lösen

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

Hoffe das hilft dir (funktioniert bei mir in einem ähnlichen Szenario)

Der vollständige Basiscode zum Hinzufügen der jQuery-Validierung:

  1. Stellen Sie das Validierungsskript in die Warteschlange. Ich gehe davon aus, dass jQuery bereits benötigt wird.

    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. Im js-Datei- oder Skript-Tag:

    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. Erledigt :)

2
Ijas Ameenudeen

Wenn Sie serverseitig validieren möchten, können Sie am einfachsten Erweiterte benutzerdefinierte Felder verwenden, um Ihre benutzerdefinierten Feldlayouts zu definieren, und anschließend Validiertes Feld das Add-On, um Ihre Validierung pro Feld in festzulegen WordPress Admin.

0
doublesharp