2014-01-12 48 views
0

我無法讓這段代碼工作。如果語法不正確,我很抱歉。我正在和一個已經有了主題的客戶一起使用,我正在嘗試對其進行相應的修改。客戶是一名出租物業經理,需要一個搜索自由格式文本字段來遍歷地址,城市,州和郵政編碼以找到匹配或類似於搜索輸入字段的匹配項。到目前爲止,我所做的並不管用,只是返回所有屬性,不管搜索條件如何。我不是特別確定我在這裏做錯了什麼,並希望對此有所瞭解。Wordpress通過多個數據庫字段搜索

if (get_query_var('paged')) { 
$paged = get_query_var('paged'); 
} else if (get_query_var('page')) { 
$paged = get_query_var('page'); 
} else { 
$paged = 1; 
} 
$args = array(
'post_type' => 'property', 
'paged' => $paged 
); 
if(isset($_GET['search_keyword'])) { 
if($_GET['search_keyword']) { 
    $args['meta_query'][] = array(
    'relation'=>'or', 
    array (
    'key' => 'pyre_address', 
    'value' => $_GET['search_keyword'], 
    'compare' => 'LIKE', 
    'type' => 'CHAR' 
    ), 
    array(
    'key' => 'pyre_state', 
    'value' => $_GET['search_keyword'], 
    'compare' => 'LIKE', 
    'type' => 'CHAR' 
    ), 
    array(
    'key' => 'pyre_city', 
    'value' => $_GET['search_keyword'], 
    'compare' => 'LIKE', 
    'type' => 'CHAR' 
), 
array(
    'key' => 'pyre_zip', 
    'value' => $_GET['search_keyword'], 
    'compare' => 'LIKE', 
    'type' => 'CHAR' 
) 
); 

} 
} 

query_posts($args); 
if(have_posts()): 
+0

你可以用'get_posts'或'WP_Query'調用顯示整個代碼嗎? –

+0

我加了那段代碼,但我知道那部分不是問題。這部分還有其他高級字段,只需調用數據庫中的一個字段進行檢查,並返回正確的結果即可。 – blckenedicekaj

回答

1

您的查詢只是刪除[]:

$args['meta_query'] = array(// correct line, the [] has to be removed 

僅供參考,在焦炭指定類型將投在WHERE語句爲CHAR值(見CAST由於WordPress的,在表中。 wp_postmeta,列meta_value是VARCHAR,我認爲這是沒有用指定它,它只是放慢您的查詢。

我希望我可以理解:)

還看看LIKE和'%keyword%'和'keyword'之間的區別

+0

你是!感謝您對此的深入瞭解。由於語法錯誤,我今天學到了更多。 – blckenedicekaj