是的,我有read through the entire wpdb和ezSQL所以我对wpdb类可以做什么有很好的理解...本质上wpdb是SQL对javascript的jQuery是什么!
由于我之前从未这样做过,所以我不会在不尝试SQL的情况下感觉太糟糕,但这就是我今天所做的事情,表明我已经尝试过,但后来才读到AND和OR不能使用在WP_Query中:\
最终结果应该是,如果用户从“ProductType”下拉列表中选择并单击搜索按钮,该页面应根据该选项菜单中的该术语返回结果。如果他们从ProductGroup 中选择一个选项并点击搜索按钮,则结果需要根据选择返回。
如果两个下拉菜单都选择了选项,则需要查询ProductType和ProductGroup 并返回结果。
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'relation'=>'AND', // or OR
'relation'=>'OR', // this is naturally not correct
'meta_query' => array(
array(
'key' => 'product_type',
'value' => $ProductType,
'compare' => 'LIKE'
),
array(
'key' => 'product_group',
'value' => $ProductGroup,
'compare' => 'LIKE'
)
)
);
<form name="x" action="" method="GET" class="search-results-form" >
<select name="productType" class="search-product-type">
<option value="">Product Type</option>
<option value="ProductType1">ProductType1</option>
<option value="ProductType2">ProductType2</option>
</select>
<select name="productGroup" class="search-product-type">
<option value="">Product Type</option>
<option value="ProductGroup1">ProductGroup1</option>
<option value="ProductGroup2">ProductGroup2</option>
</select>
<input type="submit" value="SEARCH" class="submit-button btn" />
</form>
我希望这是有道理的,所以如果有人能给我一个起点,我会很感激。
答案 0 :(得分:0)
你可以使用这样的关系条件: -
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
'relation'=>'AND', // or OR
array(
'key' => 'product_type',
'value' => $ProductType,
'compare' => 'LIKE'
),
array(
'key' => 'product_group',
'value' => $ProductGroup,
'compare' => 'LIKE'
)
)
);
您也可以根据需要更改relation
...
答案 1 :(得分:0)
我知道这是一个老问题,但万一有人偶然发现(就像我一样),这应该有效:
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
// 'relation'=>'AND', // Not required, as it defaults to "AND"
'meta_query' => array()
);
if (isset($_GET['product_type']) && !empty($_GET['product_type'])) {
$args['meta_query'][] = array(
'key' => 'product_type',
'value' => $ProductType,
'compare' => 'LIKE'
);
}
if (isset($_GET['product_group']) && !empty($_GET['product_group'])) {
$args['meta_query'][] = array(
'key' => 'product_group',
'value' => $productGroup,
'compare' => 'LIKE'
);
}
?>
<form name="x" action="" method="GET" class="search-results-form" >
<select name="productType" class="search-product-type">
<option value="">Product Type</option>
<option value="ProductType1">ProductType1</option>
<option value="ProductType2">ProductType2</option>
</select>
<select name="productGroup" class="search-product-type">
<option value="">Product Type</option>
<option value="ProductGroup1">ProductGroup1</option>
<option value="ProductGroup2">ProductGroup2</option>
</select>
<input type="submit" value="SEARCH" class="submit-button btn" />
</form>