Wordpress查询与多个元元关键字

时间:2013-08-12 10:18:55

标签: 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 );

此代码给出了错误

  

解析错误:语法错误,意外T_IF,期待')'   第23行 * /wp-content/themes/gs/page-nek-pretraga.php;

第23行是以if($lokacija)...

开头的行

我想要做的是使用多个meta_query,我可以从php获取(www.blabla./com/page1/?lokacija=foo&tip=foo&sobe=3

但是,只有当我们说$lokacija不为空时我才想要它。其他两个(可能的5-6个以后)字段相同。

2 个答案:

答案 0 :(得分:1)

您不能在数组中包含if条件。无论您尝试使用上述代码实现什么,都可以使用以下代码实现。

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

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

答案 1 :(得分: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/

“;