meta_compare non confronta l'intero numero intero
Ho inviato un dato intero tramite un modulo alla mia pagina di ricerca personalizzata. Posso ottenere i valori correttamente se l'input è un singolo carattere (es. 1) ma se l'input è multi-carattere (es. 100) continua a confrontare solo con "1".
SE l'input dell'utente è 1 ottengo tutti i post con valore del campo personalizzato Maggiore di 1. Ma se l'input è 100 il risultato è lo stesso.
Perché succede questo??
Ecco il mio codice:
$i_rate = $_GET["interest_rate"];
$bc_args = array(
'post_type' => 'data',
'data-category'=>'insurance-rate',
'order' => 'DESC',
'meta_key' => 'interest_rate',
'meta_value' =>$i_rate,
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
);
$sortedPosts = new WP_Query($bc_args);

Potresti provare questo invece:
$bc_args = array(
'post_type' => 'data',
'data-category' =>'insurance-rate',
'order' => 'DESC',
'orderby' => 'meta_value_num',
'meta_query' => array(
array(
'key' => 'interest_rate',
'value' => (int) $i_rate,
'type' => 'numeric',
'compare' => '>='
),
)
);
$sortedPosts = new WP_Query( $bc_args );
dove utilizziamo il numeric type
.
Dovresti anche considerare l'uso di filter_input
invece di $_GET
:
$i_rate = filter_input( INPUT_GET, 'i_rate', FILTER_SANITIZE_NUMBER_INT );
oppure il metodo nativo add_query_var / get_query_var
.
Ps: data-category
non è un parametro nativo nella classe WP_Query()
.

Grazie mille... ha funzionato esattamente come avevo bisogno... Sapevo che c'era qualche tipo di problema di casting ma non sapevo come risolverlo.
Grazie
