meta_compare sembra essere il trattamento di valori come stringhe invece di interi come previsto

wordpress.stackexchange https://wordpress.stackexchange.com/questions/3737

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:

  1. 9000000
  2. 900
  3. 8500000
  4. 750
  5. 600
  6. 15000

I loro vorrebbe essere ordinato (DISC) come segue:

  1. 9000000
  2. 8500000
  3. 15000
  4. 900
  5. 750
  6. 600

sto facendo qualcosa di sbagliato qui?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top