Publiez une méta dans un champ personnalisé avec plusieurs lignes ! -WordPress
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_feature
utilisation 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_feature
contient 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);
}
}
0 commentaire