Ich habe in jedem Beitrag einen Metaschlüssel namens "prijs". Der Wert dieses Metaschlüssels besteht aus Zahlen in der folgenden Struktur: 2.100,00
Ich möchte das Komma im Meta-Wert entfernen, um diese Ausgabe zu erhalten: 2100.00
Also habe ich eine Funktion erstellt, die aber nicht funktioniert:
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;
}
Ich habe die Funktion deleteCommaDB
erstellt. Diese Funktion erhält das Post-Meta aus dem Metaschlüssel 'prijs' und ersetzt das Komma umsonst. Dieser neue Wert wird in der Variablen $ newPrice gespeichert. Als Nächstes aktualisieren Sie das Post-Meta mit dem neuen Wert.
Was mache ich falsch?
Sie müssen es nur einmal ausführen, aber dies sollte alle Ihre Beiträge abrufen und sie dann durchlaufen und das Meta aktualisieren.
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;
}
Ihre Funktion wird nur ausgeführt, wenn ein Beitrag eingefügt wurde. Möglicherweise möchten Sie zunächst save_post
ausführen und die $_POST
-Eingabe bereinigen.
add_action ('wp_insert_post', 'deleteCommaDB'); - Diese Zeile ruft Ihre Funktion nur bei der Nacherstellung auf.
Um alle zuvor gespeicherten Beiträge zu ändern, müssen Sie Ihre Funktion in einer WordPress-Schleife hinzufügen, die alle Beiträge abruft.
Keine Notwendigkeit für str_replace()
und andere komplizierte oder langsame Dinge. Verwenden Sie, was PHP oder WordPress für solche Fälle liefern:
Fürs Protokoll: Es gibt auch eine Funktion namens money_format()
.