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'
)
)
)
));