Comment mettre à jour la valeur de post_meta comme tableau
-
-
Lesmessages d'erreur sont assez descriptifs.Qu'est-ce quetune comprendspas?S'il vousplaît,expliquez.`in_array ()`nécessite que le deuxièmeparamètre soit untableau,[consultez la documentation PHP] (http://php.net/manual/en/function.in-array.php).Donc,vous devezjuste être sûr que le deuxièmeparamètre que vouspassez à `in_array ()`est untableau.C'esttout sur lemessage d'erreur.Notez également que cette question,telle qu'elleest,concerne uneerreur PHPgénérique,quiest [hors du champ d'application de ce site] (http://wordpress.stackexchange.com/help/on-topic).The error messages is quite descriptive. What do you don't understand? Please, explain. `in_array()` requires the second parameter be an array, [check the PHP docs](http://php.net/manual/en/function.in-array.php). So, you just need to be sure that the second parameter you pass to `in_array()` is an array. Thats all about the error message. Also, note that this question, as iti is, is about a generic PHP error, which is [out of the scope of this site](http://wordpress.stackexchange.com/help/on-topic).
- 0
- 2016-10-19
- cybmeta
-
@cybmeta après avoir utilisé votre code de réponseet misfalse dansget_post_metamaintenant le deuxièmeparamètre $item-> content_multiple étant untableau,mais lorsqueje sélectionneplusieurs options,enregistrez uniquement la dernière optionet ne sauvegardezpastoutes les options sélectionnées@cybmeta after using your answer code and puting false in get_post_meta now the second parameter $item->content_multiple being array but when i select multiple options only save last option and don't save all selected options
- 0
- 2016-10-19
- Shwan Namiq
-
S'il vousplaît,laissez des commentaires sur la réponse dans la réponse,sinon celapeut dérouter d'autres utilisateurs.Please, leave comments about the answer in the answer, otherwise it can confuse other user.
- 0
- 2016-10-19
- cybmeta
-
1 réponses
- votes
-
- 2016-10-19
Vousn'utilisezpas correctement lafonction
selected()
.selected()
nécessite 1paramètres obligatoireset 2 options.Dans votre cas,ilestpréférable d'utiliserpour $ selectedet $ current.Vousmanquez letrait de soulignement avant lenom de votreméta-champ dans lenom sélectionné.
Pour sélectionné ():
selected( $selected, $current, $echo);
vouspouvezen savoirplus à ce sujet dans le codex référence de lafonction sélectionnée ()
Votre sélection doit être comme ceci:
<select name="_menu-item-content-multiple[]" multiple> <?php foreach ($select_options as $key => $value) { echo '<option value="'.$key.'" '.selected(in_array($key, $item->content_multiple), $key).'>'.$value.'</option>'; } ?> </select>
You don't use
selected()
function correctly.selected()
need 1 required parameters and 2 optionals. In your case, it's better to use to $selected and $current.You miss the underscore before your meta-field name in the select name.
For selected():
selected( $selected, $current, $echo);
you can read more about this from the codex function reference selected()
Your select must be like this:
<select name="_menu-item-content-multiple[]" multiple> <?php foreach ($select_options as $key => $value) { echo '<option value="'.$key.'" '.selected(in_array($key, $item->content_multiple), $key).'>'.$value.'</option>'; } ?> </select>
-
J'ai utilisé votre codemaisj'ai égalementmontré l'erreur,je pense que l'erreur dans $item-> content_multiple doit êtreenregistréeen tant quetableau car le $item-> content_multipleenregistre également une valeuret ne sauvegardepasplus d'une valeuren tant quetableauI used your code but also show the error, I think the error in $item->content_multiple it must be saved as array because the $item->content_multiple also save one value and not save more than one value as array
- 0
- 2016-10-19
- Shwan Namiq
-
Ok,vérifiez que votrenom deméta-champesttoujours lemême,ilne l'est actuellementpas.Si vous voulez qu'il soit avec unpréfixe de soulignement,utiliseztoujours cetrait de soulignementet nommez votre sélection avec untrait de soulignement ou avec untiret.update_post_metafonctionnemais aucune valeurne sera sauvegardée.Ok, verify that your meta-field name is always the same, it is currently not. If you want it to be with an underscore prefix, always use this underscore, and name your select with underscore or with dash. update_post_meta work but no value will be save.
- 0
- 2016-10-19
- Benoti
-
J'ai ajoutéplus de 10 champs car le champ ci-dessusfonctionnetous sans aucunproblème Je dis l'erreur dans $item-> content_multiple car ce champenregistre également la valeur uniqueet ne sauvegardepasplus d'une valeuren mêmetemps cariln'estpasmis àjour comme letableau.avant laboucleforeach quandje mets $item-> content_multiple=array ();c'est dutravailet neme montre aucuneerreurmaisne sauvegardepas les valeursI added more than 10 fields as above field all works without any problem I say the error in $item->content_multiple because this field also save the single value and not save more than one value in the same time because it is not updated as the array. before foreach loop when i put $item->content_multiple = array(); it is work and don't show me any error but don't save values
- 0
- 2016-10-19
- Shwan Namiq
-
Pas vraiment sûr,mais vérifiez letype de $item,est-ce un objet ou untableau?ok le contenu qu'il contientest untableau,maisessayez de le convertiren untableaupour lafonctionin_array,avant que laboucleforeach (tableau) $item et dans le selected () l'utilise comme untableau comme ceci: $item ['content_multiple']Don't really sure, but verify $item type, is it an object or an array ? ok the content in it is an array, but try to convert it into an array for the in_array function, before the foreach loop (array)$item and in the selected() use it as an array like this : $item['content_multiple']
- 0
- 2016-10-19
- Benoti
-
$item c'est un objetpas untableau ()$item it is an object not an array()
- 0
- 2016-10-19
- Shwan Namiq
-
in_array ()n'accepte letableau que comme secondparamètre.Vous devez convertir votre objeten untableau comme celui-ci: (array) $item,mais laissez letroisième argument deget_post_meta àtrue (pour obtenir l'objetet vouspourrezensuite le convertir)in_array() only accept array as second paramater. You need to convert your object into an array like this : (array)$item, but leave the third arg of get_post_meta to true (to get the object and then you'll be able to convert it)
- 0
- 2016-10-19
- Benoti
J'ai créé unnouveau champpersonnalisé dans les éléments demonmenu denavigationen tant qu'options de sélectionmultiplesj'ai utilisé
update_post_meta()
comme ci-dessousEnsuite,j'ajoute unnouveau champ dans lefichier
Walker_Nav_Menu_Edit
comme ci-dessousMODIFIÉ
Mon codefonctionne avec laboîte de sélection unique sans aucunproblème,mais lorsquej'utilise
in_array()
dansplusieurs cas de sélection,renvoie cetteerreur