WordPress gibt eine Warnung, aber mein Code funktioniert gut

Ich entwickle ein Thema und erhalte den folgenden Fehler ” Warning: trim() expects parameter 1 to be string, array given in C:\wamp\www\themes\wp-includes\query.php on line 1609 “. Ich habe alles versucht, woran ich denken konnte, und habe länger gegoogelt, als ich zugeben möchte, dass ich versucht habe, das Problem zu lösen.

Das Thema

Ich habe ein Formular erstellt, das es Benutzern ermöglicht, ein Rezept zu senden und es an einen benutzerdefinierten Post-Typ mit wp_insert_post am Frontend der Site zu wp_insert_post . Das Problem ist mit den Wiederholungsfeldern, die ich eingerichtet habe. Sie funktionieren gut im Dashboard, mussten aber offensichtlich geändert werden. Sie reichen zu einem Array und reichen korrekt zu meinem Post-Typ, aber casting Sie den Fehler oben.

Ich wäre dankbar, wenn jemand einen Blick darauf casting könnte und mich wissen lassen würde, was ich tun könnte, um es aufzuräumen.

Nicht sicher, ob es wichtig ist, aber hier wiederhole ich die Felder

  jQuery(document).ready(function( $ ){ $( '#add-row' ).on('click', function() { var row = $( '.empty-row.screen-reader-text' ).clone(true); row.removeClass( 'empty-row screen-reader-text' ); row.insertBefore( '#repeatable-ingredient-set tbody>tr:last' ); return false; }); $( '.remove-button' ).on('click', function() { $(this).parents('tr').remove(); return false; }); });  

Hier ist der Abschnitt, der das Problem verursacht

        $value ) : ?> <option value="">    Remove         $value ) : ?> <option value="">    Remove  

Hier wird es eingereicht

 //* Create a blank array for the newly added ingredients $ingredients = array(); //* Get the names $names = $_POST['name']; //* Get the measurements $amounts = $_POST['amount']; //* Get the units ($options) $units = $_POST['unit']; //* Find the number of ingredients by counting the names $count = count( $names ); //* As long as there are ingredients then add them to the array for ( $i = 0; $i  $recipe_title, //* Add the title 'post_content' => $recipe_content, //* Add the instructions 'meta_input' => array( 'cook_time_hour' => $cook_time_hour, //* Add the cook time hours 'cook_time_minute' => $cook_time_minute, //* Add the cook time minutes 'servings' => $servings, //* Add the servings 'calories' => $calories, //* Add the calories 'measurement_units' => $ingredients, //* Add the ingredients ), 'tax_input' => array( 'recipe_types' => array( $recipe_cat[0] ), //* Add the recipe type ), 'post_status' => 'pending', //* Set the new recipe as pending to be reviewed 'post_type' => 'recipes' //* Set it to the recipes post type ); //* Get the post ID of the newly created recipe $post_id = wp_insert_post($new_post); 

Ich weiß, dass die Namensattribute name[] , amount[] und unit[] das Problem sind, aber nicht sicher, ob es eine Möglichkeit gibt, das zu beheben, so dass es mit WordPress ohne schwere Modifikationen gut spielt.

Danke im Voraus!

Solutions Collecting From Web of "WordPress gibt eine Warnung, aber mein Code funktioniert gut"

Ich denke 'measurement_units' => $ingredients, verursacht das Problem, weil die $ingredients mehrdimensionale Array ist. Sie sollten zB 'measurement_units' => $ingredients[0], oder etc .. ich denke.

Ihre Warnung besteht darin, dass Sie trim () auf ein Array anwenden. Die Tatsache, double bracket (dh: unit []) dem eingegebenen Namen hinzuzufügen, wandle es in ein Array um.

Sie müssen einen indizierten Block hinzufügen, wenn Sie ein wiederholbares Element hinzufügen und dann ein benutzerdefiniertes Feld hinzufügen (oder einen Post aktualisieren). Dies kann sehr hilfreich sein, wenn Sie Ihr Element sortieren möchten.