2013-08-12 58 views
0

有人可以告訴我這個查詢有什麼問題。Wordpress查詢多元元鍵

if (isset($_GET['lokacija']) && !empty($_GET['lokacija'])) { 
     $lokacija = $_GET['lokacija']; 
    } else { $lokacija = ''; } 
    if (isset($_GET['tip']) && !empty($_GET['tip'])) { 
     $tip = $_GET['tip']; 
    } else { $tip = ''; } 
    if (isset($_GET['sobe']) && !empty($_GET['sobe'])) { 
     $sobe = $_GET['sobe']; 
    } else { $sobe = ''; } 

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

     $args2 = array(
     'posts_per_page' => 10, 
     'post_type' => 'nekretnine', 
     'paged' => $paged, 
      if ($lokacija != '') { 
       'meta_query' => array(
        array (
         'key' => 'lokacija', 
         'value' => $lokacija.'' 
         ), 
       ) 
      } 

     ); 
    $wp_query = new WP_Query($args2); 

此代碼給我錯誤

Parse error: syntax error, unexpected T_IF, expecting ')' in */wp-content/themes/gs/page-nek-pretraga.php on line 23;

線23線,與IF($lokacija)開始......

什麼我想要做的是使用多個meta_query,我可以從PHP獲得(www.blabla./com/page1/?lokacija=foo&tip=foo&sobe=3

但是,我想它只有如果讓我們說$lokacija不是空的。其他兩個(可能的5-6晚)字段相同。

回答

1

您不能在數組中包含if條件。無論你想用上面的代碼實現什麼,你都可以用下面的代碼來實現。

$args2 = array(
    'posts_per_page' => 10, 
    'post_type' => 'nekretnine', 
    'paged' => $paged, 
); 

if ($lokacija != '') { 
    $args2['meta_query'] = array(
     array (
       'key' => 'lokacija', 
       'value' => $lokacija.'' 
      ), 
    ); 
} 
0

要檢查多個自定義字段,我們必須加入元表兩次。 因此,該表的副本將與不同的臨時表名稱結合使用。

global $wpdb; $query = " SELECT * FROM {$wpdb--->prefix}posts 
INNER JOIN {$wpdb->prefix}postmeta m1 
    ON ({$wpdb->prefix}posts.ID = m1.post_id) 
INNER JOIN {$wpdb->prefix}postmeta m2 
    ON ({$wpdb->prefix}posts.ID = m2.post_id) 
WHERE 
{$wpdb->prefix}posts.post_type = 'post' 
AND {$wpdb->prefix}posts.post_status = 'publish' 
AND (m1.meta_key = 'date' AND m1.meta_value > '2010-12-05 00:00:00') 
AND (m1.meta_key = 'date' AND m1.meta_value < '2010-12-12 00:00:00') AND (m2.meta_key = 'some_other_meta_value' AND m2.meta_value != '') GROUP BY {$wpdb->prefix}posts.ID 
ORDER BY {$wpdb->prefix}posts.post_date 
DESC; 

瞭解更多詳情,請訪問:http://realtuts.com/write-custom-wordpress-sql-query-multiple-meta-values/

「;