get_posts cu meta_compare='LIKE' nu funcționează - Soluții

7 iul. 2012, 04:20:34
Vizualizări: 14.4K
Voturi: 6

Folosesc următorul cod:

$tolettpe = "Sale";//valoare implicită
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
    'numberposts'  => $latestcount,
    'category'     => $catidstr,
  'meta_key'     => 'property_type',
  'meta_compare' => 'LIKE',
  'meta_value'   => $tolettpe.'%'
 );
$post_content = get_posts($args);

Valoarea din baza de date este 'Sale||' și nu există variabile în șirul de interogare.

Dar interogarea nu returnează niciun rezultat.

Dacă folosesc valoarea exactă și fără meta_compare, funcționează.

Aveți idei cum să fac asta să funcționeze?

0
Toate răspunsurile la întrebare 1
3
13

meta_compare Valorile posibile sunt '!=', '>', '>=', '<', sau '<='. Valoarea implicită este '='

Dacă doriți să utilizați LIKE, trebuie să creați un meta_query, de exemplu:

$tolettpe = "Vânzare"; // implicit
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
    'numberposts'  => $latestcount,
    'category'     => $catidstr,
    'meta_query' => array(
        array(
            'key' => 'property_type',
            'value' => $tolettpe,
            'compare' => 'LIKE'
        )
    )
);
$posts = get_posts($args);

Interogarea generată plasează termenul de căutare între două semne %, astfel încât nu este necesar să adăugați oricare în cod.

7 iul. 2012 12:59:28
Comentarii

mersi, am încercat dar nu primesc niciun rezultat. Există vreo metodă să afișez interogarea generată ca să o pot rula direct în baza de date pentru depanare?

inarilo inarilo
7 iul. 2012 14:39:53

ok, am găsit răspunsul la această întrebare http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis

inarilo inarilo
7 iul. 2012 15:11:12

de fapt metoda mea originală funcționează și ea, problema era semnul % în plus!

inarilo inarilo
7 iul. 2012 15:22:25