J'ai une méta clé appelée "prijs" dans chaque post. La valeur de cette clé méta consiste en des nombres dans la structure suivante: 2 100,00
Je veux supprimer la virgule dans la valeur méta pour obtenir cette sortie: 2100.00
Donc, j'ai créé une fonction mais ça ne marche pas:
add_action('wp_insert_post', 'deleteCommaDB');
function deleteCommaDB($postID){
$price_key = 'prijs';
$getPrice = get_post_meta($postID, $price_key, true);
$newPrice = str_replace(array(','), '', $getPrice);
update_post_meta($postID, $price_key, $newPrice);
return true;
}
J'ai créé la fonction deleteCommaDB
. Cette fonction récupère la méta de publication à partir de la clé méta 'prijs' et remplace la virgule pour rien. Cette nouvelle valeur est enregistrée dans la variable $ newPrice. La prochaine chose à faire est de mettre à jour la méta de la publication avec la nouvelle valeur.
Qu'est-ce que je fais mal?
Vous n'aurez besoin que de l'exécuter une seule fois, mais tous vos articles devraient y figurer, puis les parcourir en boucle et mettre à jour la méta.
add_action('admin_init', 'deleteCommaDB');
function deleteCommaDB(){
// The Query
$args = array ( 'posts_per_page' => -1 );
$the_query = new WP_Query( $args );
// The Loop
while ( $the_query->have_posts() ) :
$the_query->the_post();
$price_key = 'prijs';
$getPrice = get_post_meta( get_the_ID(), $price_key, true);
$newPrice = str_replace(array(','), '', $getPrice);
update_post_meta(get_the_ID(), $price_key, $newPrice);
endwhile;
}
Votre fonction ne s'exécute que lorsqu'une publication est insérée. Vous voudrez peut-être envisager de s'exécuter sur save_post
et de nettoyer l'entrée $_POST
en premier lieu.
add_action ('wp_insert_post', 'deleteCommaDB'); - cette ligne appelle votre fonction uniquement lors de la création d'un post.
Afin de changer tous les messages précédemment sauvegardés, vous devrez ajouter votre fonction dans une boucle wordpress qui récupère tous les messages.
Pas besoin de str_replace()
et d'autres choses compliquées ou lentes. Utilisez ce que PHP ou WordPress fournit pour de tels cas:
Pour mémoire: Il existe également une fonction appelée money_format()
.