meta_compare nu compară întregul număr întreg
Am trimis date numerice printr-un formular către pagina mea de căutare personalizată. Pot obține valori corect dacă input-ul are un singur caracter (ex. 1), dar dacă input-ul are mai multe caractere (ex. 100), comparația se face tot cu "1".
DACĂ input-ul utilizatorului este 1 primesc toate articolele cu valoarea câmpului personalizat Mai mare decât 1. dar dacă input-ul este 100 rezultatul este același.
De ce se întâmplă asta??
Iată codul meu::
$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);

Ai putea încerca asta în schimb:
$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 );
unde folosim numeric type
.
Ar trebui să iei în considerare și utilizarea filter_input
în loc de $_GET
:
$i_rate = filter_input( INPUT_GET, 'i_rate', FILTER_SANITIZE_NUMBER_INT );
sau metoda nativă add_query_var / get_query_var
.
Ps: data-category
nu este un parametru nativ în clasa WP_Query()
.

Mulțumesc mult.... a funcționat exact cum aveam nevoie...Știam că era o problemă de tip casting dar nu știam cum să o rezolv.
Mulțumesc
