web-dev-qa-db-de.com

Funktion zum Ändern des Meta-Werts in der Datenbank für jeden Beitrag

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?

2
ElBrm

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.

1
helgatheviking

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.

1
K Themes

Nehmen Sie immer das richtige Werkzeug für den richtigen Job

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() .

1
kaiser