it-swarm.dev

Ověření vlastních hodnot Meta Box a požadovaných polí

Něco, co jsem nikdy neviděl, je nejlepší způsob, jak ověřit, že konkrétní pole formuláře jsou vyplněna správně pro vlastní pole typu meta.

Chci získat znalecké posudky o tom, jak nejlépe ověřit vlastní pole pro všechny metaboxy, které lze vytvořit. Mým zájmem je:

  • zajistit ověření platnosti pole před zveřejněním/aktualizací příspěvku
  • s využitím třídy/kódu, který není v rozporu s jinými wordpress javascript
  • umožňuje definovat konkrétní pole podle potřeby, zatímco jiné mohou být volitelné
  • ověřte pole na základě přizpůsobitelných pravidel, včetně regexu pro věci, jako je formát e-mailu
  • kontrolovat vizuální zobrazení všech chyb/oznámení

Díky předem!

15

Nejjednodušší způsob je přidat validaci Javascriptu pomocí jQuery Validate plugin . Zde je nejzákladnější návod:

V blízkosti vašeho volání add_meta_box si vytvořte plugin jQuery Validate a soubor JS pro jednoduchý skript:

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

Pak v my_script.js patří následující:

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

To umožní ověření na formuláři pošty. Potom ve zpětném volání add_meta_box, kde definujete vlastní pole, přidáte pro každé pole, které chcete ověřit, takovou „požadovanou“ třídu:

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

Všechna pole s "požadovaným" ve své třídě budou ověřena, když je příspěvek uložen/publikován/aktualizován. Všechny ostatní možnosti validace (pravidla, chybový styl, atd.) Lze nastavit v document.ready funkci v my_script.js; zaškrtněte dokumenty jQuery Validate pro všechny možnosti.

20
danblaker

Použil jsem tento kód, velmi užitečný, justa změněna:

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

Na:

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

Protože pokud máte jiný formulář uvnitř hlavního formuláře, spusťte skript.

A:

$(form).submit();

Na:

$(this).submit();

Protože první řádek pouze ukládá příspěvek jako koncept a již jej nemůžete publikovat.

Vše zde napsáno: http://allgraphics.it/blog/2012/10/jquery-validation-sui-campi-di-input-postcustom-post-di-wordpress/

2
Ricky

Našel jsem tento přístup k vyřešení problému ověření polí metabox pomocí kódu PHP

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

Doufám, že vám to pomůže (pracuje pro mě v podobné situaci)

Kompletní základní kód pro přidání ověření jQuery:

  1. Vyznačte ověřovací skript. Předpokládám, že jQuery je již 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. V souboru js nebo ve značce skriptu:

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

2
Ijas Ameenudeen

Pokud chcete být schopni ověřit stranu serveru, nejjednodušší možností je použít Pokročilá vlastní pole pro definování vlastních rozvržení polí, a pak Validované pole doplněk pro nastavení ověření na poli v poli WordPress Admin.

0
doublesharp