web-dev-qa-db-fra.com

Pouvez-vous créer un champion de métabox personnalisé pour enregistrer un nouveau message?

Je travaille sur un type d'article personnalisé, j'ai supprimé tous les éléments de formulaire Wordpress standard et commencé à partir de zéro avec des boîtes de méta personnalisées, à l'exception du champ de titre.

Dans mon cas, il est vraiment important de sélectionner certaines sélections du menu déroulant méta personnalisé.

Existe-t-il une solution facile pour rendre l'endroit où ils doivent sélectionner certains éléments avant de pouvoir publier l'article?

Je suppose que javascript serait la solution la plus simple, mais il serait agréable de laisser l’utilisateur savoir ce qui se passe, par exemple, surligner la case s’ils essaient de publier et qu’elle n’a pas encore été sélectionnée. Un autre problème est un menu déroulant. est par défaut une valeur déjà sélectionnée même s’ils n’en ont pas choisi

6
JasonDavis

Vous pouvez utiliser jQuery car il est déjà chargé dans les publications. L'idée est d'arrêter l'action de soumission de formulaire.

J'ai deux éléments HTML dans ma méta:

<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">

Le formulaire a un identifiant de "post". Donc, avec jQuery, nous pouvons écrire:

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

Je pense que cela devrait le faire. Pour ajouter du javascript sur une page de publication, utilisez admin_init hook et wp_enque_script. recherchez-les dans le codex et vous découvrirez comment les utiliser. sinon, postez une nouvelle question.

3
ferenyl