Publiez une méta dans un champ personnalisé avec plusieurs lignes ! -WordPress

Publié par Jean-Michel le

J’utilise le thème houzez et j’essaie de développer un plugin pour publier d’une API vers une publication « propriété ». « Propriété » est une publication personnalisée et un champ personnalisé ( additional_feature) comporte plusieurs lignes.

Lorsque j’obtiens la valeur de l’ additional_featureutilisation get_post_meta()dans un exemple de publication avec les champs déjà remplis, nous obtenons :

Array ( [0] => Array ( [0] => Array ( [fave_additional_feature_title] => aaa
[fave_additional_feature_value] => 234 ) [1] => Array (
[fave_additional_feature_title] => bbb [fave_additional_feature_value] => 567
) [2] => Array ( [fave_additional_feature_title] => ccc
[fave_additional_feature_value] => 890 ) ) )

Ainsi, le champ personnalisé additional_featurecontient plus de champs à l’intérieur !! Quand je l’utilise update_post_metaça ne marche pas. J’ai essayé de configurer un tableau pour transmettre les données exactement comme le tableau d’échantillon ressemble lorsqu’il est appelé creux get_post_meta(). Cependant, cela ne fonctionne pas.

Une idée de comment mettre à jour additional_feature?

Solution n°1 trouvée

Quelque chose de bizarre s’est produit. J’ai réessayé une méthode qui n’a pas fonctionné mais je n’avais plus d’idées. J’ai utilisé le code suivant :

$data = array(
   array(
        'fave_additional_feature_title' => 'Ax',
        'fave_additional_feature_value' => 111,
   ),
);

update_post_meta($postid, 'additional_features', $data);

Cela a fonctionné cette fois. Très bizarre et je ne sais pas comment cela ne fonctionnait pas avant et maintenant cela fonctionne. Cependant, je peux maintenant mettre à jour le champ personnalisé.

Solution n°2 trouvée

* Pour produire la méta du répéteur (est utilisé – répéteur de champ personnalisé ACF).

$meta = get_post_meta($post->ID); //Get all post meta per one request
$repeater_count = $meta["additional_feature"][0]; //Count of iteration

for ($i=0; $i<$repeater_count; $i++) {
 $feature_title = 'additional_feature_'.$i.'_title';
 echo $meta[$feature_title][0]; //Output repeater meta
}

* Pour mettre à jour la méta du répéteur (utilisez le répéteur de champ personnalisé ACF). Mise à jour sur la publication de sauvegarde.

Vous pouvez modifier le code selon vos besoins

!!!Générez mieux le code de travail sur le site de test, car avec des noms erronés des champs utilisateur, lors de l’enregistrement de la publication, de nouveaux champs seront créés dans la table de base de données – post_meta.

Ajouter à functions.php

add_filter('acf/save_post', 'main_meta_filter', 20);
function main_meta_filter($post_id) {

    if ( $post_id != 7 ) //You can use post type if you need
        return;

//Repeater
$number_rows = get_post_meta( $post_id, "additional_feature" );//Count of iteration
 for ($i=0; $i<$number_rows[0]; $i++) {
  $key = 'additional_feature_'.$i.'_title';
//To get old value use $old_value = get_post_meta($post_id, $key, false);
//and output use $old_value[0]
  $new_value = 1;//You custom value
  update_post_meta($post_id, $key, $new_value);
 }

}

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *