Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用多个键筛选查询帖子_Php_Html_Wordpress_Filtering - Fatal编程技术网

Php 使用多个键筛选查询帖子

Php 使用多个键筛选查询帖子,php,html,wordpress,filtering,Php,Html,Wordpress,Filtering,你好,我在一个物业网站工作,我希望用户能够按位置过滤。我有一个文本输入供用户执行此操作。在后端,我有三个高级自定义字段,每个字段指定位置的不同部分,例如;城镇、县和邮政编码。现在我需要用户能够在一个输入框中输入一个城镇、县或邮政编码,然后我想存储该值并使用它检查所有字段。我试过两种方法都不管用 尝试一: <?php if($_GET['min_price'] && !empty($_GET['min_price'])){

你好,我在一个物业网站工作,我希望用户能够按位置过滤。我有一个文本输入供用户执行此操作。在后端,我有三个高级自定义字段,每个字段指定位置的不同部分,例如;城镇、县和邮政编码。现在我需要用户能够在一个输入框中输入一个城镇、县或邮政编码,然后我想存储该值并使用它检查所有字段。我试过两种方法都不管用

尝试一:

<?php 
                    if($_GET['min_price'] && !empty($_GET['min_price'])){
                        $min_price = $_GET['min_price'];
                    }else{
                        $min_price = 0;
                    }

                    if($_GET['max_price'] && !empty($_GET['max_price'])){
                        $max_price = $_GET['max_price'];
                    }else{
                        $max_price = 10000000;
                    }

                    if($_GET['bedrooms'] && !empty($_GET['bedrooms'])){
                        $bedrooms = $_GET['bedrooms'];
                    }

                    if($_GET['location'] && !empty($_GET['location'])){
                        $location = $_GET['location'];
                    }

                $posts = get_posts(array(
                    'posts_per_page'    =>  -1,
                    'post_type'         =>  'property',
                    'orderby'           =>  'date',
                    'meta_query'        =>  array(
                        array(
                            'key'       => 'property_status',
                            'value'     => 'For Sale'
                        ),

                        array(
                            'key'       => 'town',
                            'value'     => $location,
                            'compare'   => 'LIKE'
                        ),

                        array(
                            'key'       => 'county',
                            'value'     => $location,
                            'compare'   => 'LIKE'
                        ),

                        array(
                            'key'       => 'postcode',
                            'value'     => $location,
                            'compare'   => 'LIKE'
                        )
                    )

                ));
尝试二:

<?php 
                    if($_GET['min_price'] && !empty($_GET['min_price'])){
                        $min_price = $_GET['min_price'];
                    }else{
                        $min_price = 0;
                    }

                    if($_GET['max_price'] && !empty($_GET['max_price'])){
                        $max_price = $_GET['max_price'];
                    }else{
                        $max_price = 10000000;
                    }

                    if($_GET['bedrooms'] && !empty($_GET['bedrooms'])){
                        $bedrooms = $_GET['bedrooms'];
                    }

                    if($_GET['location'] && !empty($_GET['location'])){
                        $location = $_GET['location'];
                    }

                $posts = get_posts(array(
                    'posts_per_page'    =>  -1,
                    'post_type'         =>  'property',
                    'orderby'           =>  'date',
                    'meta_query'        =>  array(
                        array(
                            'key'       => 'property_status',
                            'value'     => 'For Sale'
                        ),

                        array(
                            'key'       => 'property_price',
                            'type'      => 'NUMERIC',
                            'value'     => array($min_price, $max_price),
                            'compare'   => 'BETWEEN'
                        ),

                        array(
                            'key'       => 'bedrooms',
                            'value'     => $bedrooms,
                            'compare'   => 'LIKE'
                        ),

                        array(
                            'key'       => array('town', 'county', 'postcode'),
                            'value'     => $location,
                            'compare'   => 'LIKE'
                        )
                    )

                ));
html:


您可以使用“关系”选项来确定如何生成查询。此外,meta_查询子句可以嵌套。在第一个示例中,查询可以是这样的:

<?php 
if($_GET['min_price'] && !empty($_GET['min_price'])){
  $min_price = $_GET['min_price'];
}else{
  $min_price = 0;
}

if($_GET['max_price'] && !empty($_GET['max_price'])){
   $max_price = $_GET['max_price'];
}else{
   $max_price = 10000000;
}

if($_GET['bedrooms'] && !empty($_GET['bedrooms'])){
   $bedrooms = $_GET['bedrooms'];
}

if($_GET['location'] && !empty($_GET['location'])){
   $location = $_GET['location'];
}

$posts = get_posts(array(
   'posts_per_page'    =>  -1,
   'post_type'         =>  'property',
   'orderby'           =>  'date',
   'meta_query'        =>  array(
       'relation' => 'AND',
        array(
           'key'       => 'property_status',
           'value'     => 'For Sale'
        ),
        array(
           'relation' => 'OR',
           array(
              'key'       => 'town',
              'value'     => $location,
              'compare'   => 'LIKE'
           ),
           array(
              'key'       => 'county',
              'value'     => $location,
              'compare'   => 'LIKE'
           ),
           array(
              'key'       => 'postcode',
              'value'     => $location,
              'compare'   => 'LIKE'
           )
       )
   ) 
));
在这个查询中,我们说,我们想要的职位与财产_状态=出售和城镇或县或邮政编码=$location

您可以在此处的“多个自定义字段处理”部分中找到更多详细信息:

<?php 
if($_GET['min_price'] && !empty($_GET['min_price'])){
  $min_price = $_GET['min_price'];
}else{
  $min_price = 0;
}

if($_GET['max_price'] && !empty($_GET['max_price'])){
   $max_price = $_GET['max_price'];
}else{
   $max_price = 10000000;
}

if($_GET['bedrooms'] && !empty($_GET['bedrooms'])){
   $bedrooms = $_GET['bedrooms'];
}

if($_GET['location'] && !empty($_GET['location'])){
   $location = $_GET['location'];
}

$posts = get_posts(array(
   'posts_per_page'    =>  -1,
   'post_type'         =>  'property',
   'orderby'           =>  'date',
   'meta_query'        =>  array(
       'relation' => 'AND',
        array(
           'key'       => 'property_status',
           'value'     => 'For Sale'
        ),
        array(
           'relation' => 'OR',
           array(
              'key'       => 'town',
              'value'     => $location,
              'compare'   => 'LIKE'
           ),
           array(
              'key'       => 'county',
              'value'     => $location,
              'compare'   => 'LIKE'
           ),
           array(
              'key'       => 'postcode',
              'value'     => $location,
              'compare'   => 'LIKE'
           )
       )
   ) 
));