Wie kann ich meine Meta-Abfrage ändern, um mit Preisen zu arbeiten, die in der database gespeichert sind und Dollarzeichen und Kommas enthalten?

Mein Ziel ist es, Beiträge basierend auf einem bestimmten Preisbereich mit Hilfe von meta_query . Der Preis im Admin, den der Benutzer eingibt, ist ein benutzerdefiniertes Feld, das mit WPAlchemy erstellt wurde . Im folgenden Beispiel würde die Abfrage alle Beiträge mit einem Preis zwischen 1000 und 1500 zurückgeben:

  'meta_query' => array( array( 'key' => '_my_price', 'value' => array( 1000, 1500 ), 'type' => 'numerical', 'compare' => 'BETWEEN', )), 

Es funktioniert gut, wenn ein Preiswert als 1200 eingegeben wurde (und als 1200 in der DB gespeichert), aber wie kann ich das für Preise arbeiten, die in der database gespeichert sind, die Dollarzeichen und Kommas wie $1,200 ?

Idealerweise möchte ich, dass alle Preiswerte auf der Website konsistent sind, also verwende ich einen Javascript-Währungsformatierer, der die Preise umrechnet, weshalb ich frage. Wenn ein Benutzer 1200 eingibt, konvertiert er es in $1,200 , das dann in der database gespeichert wird. Die meta_query denkt nicht, dass dies eine Zahl ist und gibt daher keine Ergebnisse zurück.

Oder vielleicht gibt es eine bessere Methode. Wäre es besser, den JS-Formatierer in den Eingabefeldern des Administrators abzulehnen und stattdessen das Dollarzeichen und die Kommatrennung am Frontend hinzuzufügen? Dies scheint logischer zu sein, aber dann wirft es eine andere Frage auf, wie verhindert werden kann, dass ein Benutzer ein Dollarzeichen oder eine Komma-Formatierung in den Admin eingibt.

Solutions Collecting From Web of "Wie kann ich meine Meta-Abfrage ändern, um mit Preisen zu arbeiten, die in der database gespeichert sind und Dollarzeichen und Kommas enthalten?"

Wäre es besser, den JS-Formatierer in den Eingabefeldern des Administrators abzulehnen und stattdessen das Dollarzeichen und die Kommatrennung am Frontend hinzuzufügen?

Ja auf jeden Fall.

Dies scheint logischer zu sein, aber dann wirft es eine andere Frage auf, wie verhindert werden kann, dass ein Benutzer ein Dollarzeichen oder eine Komma-Formatierung in den Admin eingibt.

Bereinigen Sie die Eingabe vor dem Speichern mit absint() .