0

有人能告诉我这个查询有什么问题吗?

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) 开头的行...

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

但是,只有当我们说不$lokacija为空时,我才想要它。其他两个(可能在 5-6 之后)字段也是如此。

4

2 回答 2

1

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

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

if ($lokacija != '') {
    $args2['meta_query'] = array(
        array (
                'key' => 'lokacija',
                'value' => $lokacija.''
            ),
    );
} 
于 2013-08-12T10:36:26.480 回答
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/

";

于 2013-10-30T07:43:48.150 回答