meta_compare sembra essere il trattamento di valori come stringhe invece di interi come previsto
-
16-10-2019 - |
Domanda
Il tentativo di utilizzare meta_compare come suggerito nel Codex :
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
Ecco il mio codice:
global $wp_query;
query_posts(
array_merge(
array(
'category__and' => $mycatsarray,
'meta_key' => 'price',
'meta_compare' => '>=',
'meta_value' => 8500000,
'orderby' => meta_value_num,
'order'=>DESC
),
$wp_query->query
)
);
sto usando array_merge a persistere la query originale. Quindi io non riuscivo a capire come utilizzare la sintassi suggerita ( '& nome = valore') per meta_compare e meta_value. In ogni modo, nel mio codice della meta_value sembra di essere trattato come una stringa e non un intero come previsto.
Ecco un esempio di alcuni tipici campi di prezzo personalizzati dai miei messaggi personalizzati:
- 8500000
- 600
- 15000
- 900
- 750
- 9000000
Se non è un problema di stringa, potrebbe essere che WordPress è ordinamento (DISC) questi campi personalizzati come segue:
- 9000000
- 900
- 8500000
- 750
- 600
- 15000
I loro vorrebbe essere ordinato (DISC) come segue:
- 9000000
- 8500000
- 15000
- 900
- 750
- 600
sto facendo qualcosa di sbagliato qui?
Soluzione
Vai a questa domanda e la mia risposta non query_posts -> utilizzando meta_compare / dove meta valore è minore o maggiore o uguale a ...
Fondamentalmente ai fini del valore di confronto meta è sempre trattato come stringa, perché si passa come tali al metodo $wpdb->prepare()
.