web-dev-qa-db-de.com

Können Sie festlegen, dass ein benutzerdefiniertes Metabox-Feld erforderlich ist, um einen neuen Beitrag zu speichern?

Ich arbeite an einem benutzerdefinierten Beitragstyp. Ich habe alle standardmäßigen WordPress-Formularelemente entfernt und mit benutzerdefinierten Meta-Feldern, mit Ausnahme des Titelfelds, von vorne begonnen.

In meiner Situation ist es sehr wichtig, dass einige der benutzerdefinierten Meta-Dropdown-Optionen ausgewählt sind.

Gibt es eine einfache Lösung, um es zu schaffen, wo sie einige Elemente auswählen müssen, bevor sie das Element veröffentlichen können?

Ich nehme an, Javascript wäre die einfachste Lösung, aber es wäre schön, den Benutzer wissen zu lassen, was los ist. Markieren Sie beispielsweise das Kästchen, wenn Sie versuchen, etwas zu posten, und es ist noch nicht ausgewählt. Ein anderes Problem ist ein Dropdown-Menü Standardmäßig ist ein Wert bereits ausgewählt, auch wenn sie keinen ausgewählt haben

6
JasonDavis

Sie können jQuery verwenden, da es bereits in Posts geladen ist. Die Idee ist, die Formularübermittlungsaktion zu stoppen.

Ich habe zwei HTML-Elemente in meiner Meta:

<select name="cars" class="required">
  <option value="-1">Choose a car</option>
  <option value="volvo">volvo</option>
  <option value="saab">saab</option>
  <option value="bmw">bmw</option>
</select>

<input type="text" class="required" placeholder="Type year">

Das Formular hat die ID "post". Mit jquery können wir also schreiben:

jQuery(function($){ //make sure DOM is loaded and pass $ for use
    $('#post').submit(function(e){ // the form submit function
         $('.required').each(function(){
           if( $(this).val == '-1' || $(this).val == '' ){ // checks if empty or has a predefined string
             //insert error handling here. eg $(this).addClass('error');
             e.preventDefault(); //stop submit event
           }
         })
    });
});

Ich denke das sollte es tun. Verwenden Sie admin_init hook und wp_enque_script, um Javascript auf einer Postseite hinzuzufügen. Wenn Sie im Codex nach ihnen suchen, erfahren Sie, wie Sie sie verwenden können. wenn nicht, poste eine neue Frage.

3
ferenyl