Fügen Sie X-Metabox-Eingaben basierend auf dem Formular oben in der Metabox hinzu, wie geht das richtig?

Ich richte eine Metabox ein, die die Anzahl der Zutaten für ein Rezept steuert. Da jedes Rezept eine andere Anzahl von Zutaten hat, entschied ich mich für eine einfache Texteingabe und einen Knopf, um die Anzahl der Zutaten zu setzen und jQuery dynamisch die Eingaben für diese “X” Nummer hinzuzufügen.

Ich weiß, dass ich jQuery-Formular verwenden muss, bin aber unsicher, wie ich das HTML korrekt in das Meta-Feld zurückgeben kann. Ich habe eine Antwort div eingerichtet, aber nicht sicher, wie mit dem HTML umzugehen.

Kann ich den Wert aus der Texteingabe in eine PHP-function übergeben, die eine For-Schleife verwendet, um alle Eingaben für die Zutaten auszudrucken? Oder muss ich das ganze HTML mit jQuery drucken?

Hoffnung, die Sinn macht.

Vielen Dank!

meine jQuery, die funktioniert:

jQuery('#add-ingredients').click(function(event){ event.preventDefault(); var num = jQuery('input:text[name=_num_ingredients]').val(); var sections = ''; for(var i=1;i<=num;i++){ section = '
\n'; section += '
\n'; section += '\n'; section += ' \n'; section += '
\n'; section += '
\n'; section += '\n'; section += ' \n'; section += '
\n'; section += '
\n'; section += '\n'; section += ' \n'; section += '
\n'; section += '
\n'; section += '
\n'; sections += section; }//end for //add the new input sections jQuery('#ingredients').html(sections); //show the ingredients inputs jQuery('#ingredients').show('slow'); return false; });

Aber jetzt kann ich nicht herausfinden, wie man die Metadaten korrekt speichert.

Hier ist meine for-Schleife:

  //loop through all ingredients and update them accordingly for($i=1; $i $value ): if( $value ): if( get_post_meta( $post_id, $key, FALSE) ): // If the custom field already has a value update_post_meta( $post_id, $key, $value ); else: // If the custom field doesn't have a value add_post_meta( $post_id, $key, $value ); endif; else: //delete_post_meta( $post_id, $key ); // Delete if blank endif; endforeach; endfor; 

Ich weiß, dass mir etwas in der Syntax fehlt, um die $ _POST-Werte zu erhalten. Irgendwelche Ideen?

BEARBEITEN——————————-

Ich habe es versäumt, die Variable $ post in meine function zu geben – dumme mich. Jetzt funktioniert alles korrekt. Danke für deine Hilfe!

Solutions Collecting From Web of "Fügen Sie X-Metabox-Eingaben basierend auf dem Formular oben in der Metabox hinzu, wie geht das richtig?"

Sie könnten ein vorhandenes Feld mit jQuery klonen und es an das Formular anhängen. Sie müssen auch Fälle behandeln, in denen die Anzahl der Zutaten geringer ist als die Anzahl der Felder, und Sie müssen jQuery remove . Hier ist ein einfaches Beispiel für das Klonen eines Feldes:

 $('#quantity-form').submit(function(){ // get # of fields that already exist // (change this to match whatever type of fields you have) var count = $('#metabox-form input[type="text"]').length; // you'll want to check if count is > or < requested quantity and possibly remove, // or clone (in a loop to add multiple fields): $('#metabox-form input[type="text"]:last') .clone(false) .attr({ name:'field-' + (count + 1), id:'field-' + (count + 1) }) .appendTo('#metabox-form'); return false; });