我在function.php中使用以下代码循环:
$meta_query[] = array(
'key'=>
'$key', 'value'=>
$value, 'compare'=>
'IN', );
我试图在循环后添加下一个$ meta_query, 但在比较中添加” < “ 。当我添加” IN” 时, 它可以工作, 但是当我更改为” > =” 或” > ” 时, 则不起作用。
$meta_query[] = array(
'key'=>
'price', 'value'=>
$value, 'compare'=>
'>
=', );
你知道为什么吗?
这是我的完整代码:
// array of filters (field key =>
field name)
$GLOBALS['my_query_filters'] = array(
'field_1'=>
'type', 'field_2'=>
'price', 'field_3'=>
'type2', 'field_4'=>
'city', 'field_5'=>
'price_min', 'field_6'=>
'price_max', );
function my_pre_get_posts( $query ) {
global $post;
global $wpdb;
$parametry = get_field_objects($post->
ID);
if(!is_single() &
&
$post->
ID != 2 &
&
$query->
get( 'cat' )){
/* start filter*/
$meta_query = $query->
get('meta_query');
foreach( $GLOBALS['my_query_filters'] as $key =>
$name ) {
// continue if not found in url
if( empty($_GET[ $name ]) ) {
continue;
}// get the value for this filter
// eg: http://www.website.com/events?city=melbourne, sydney
$value = http://www.srcmini.com/explode(', ', $_GET[ $name ]);
// append meta queryif($name == 'price_min'){
$meta_query[] = array(
'key'=>
'price', 'value'=>
$value, 'compare'=>
'>
=', );
}
elseif($name == 'price_max'){
$meta_query[] = array(
'key'=>
'price', 'value'=>
$value, 'compare'=>
'<
=', );
}
else{
$meta_query[] = array(
'key'=>
$name, 'value'=>
$value, 'compare'=>
'IN', );
}}
// update meta query
$query->
set('meta_query', $meta_query);
【WordPress修改元查询】在URL(和表wp_postmeta)中, 我具有:类型, 类型2, 价格和城市。我没有price_min和price_max, 所以我想在price字段上进行操作。
这是过滤后我的工作数组:
Array ( [0] =>
Array ( [key] =>
type [value] =>
Array ( [0] =>
flat) [compare] =>
IN ) [1] =>
Array ( [key] =>
city[value] =>
Array ( [0] =>
Cracow) [compare] =>
IN ) )
当我添加price_min和price_max时, 这不起作用的数组:
Array ( [0] =>
Array ( [key] =>
type [value] =>
Array ( [0] =>
flat) [compare] =>
IN ) [1] =>
Array ( [key] =>
city [value] =>
Array ( [0] =>
Cracow) [compare] =>
IN ) [2] =>
Array ( [key] =>
price [value] =>
Array ( [0] =>
50000 ) [compare] =>
>
= ) [3] =>
Array ( [key] =>
price [value] =>
Array ( [0] =>
300000 ) [compare] =>
<
= ) )
#1$ value可能不是整数, 因此当它是字符串时尝试将其值比较为整数会引起一些问题。在你的WP_Query参数之前, 将此代码放置在文件中:
$value = http://www.srcmini.com/(int) $value;
看一看PHP中的杂耍类型以获得更多信息。
这是WP_Query元比较的文档。
推荐阅读
- 具有相同内容的WordPress多站点
- 转移托管后,wordpress菜单,帖子和页面显示三重
- WordPress修改父代码
- WordPress的媒体按钮设置
- 推荐学Java——第一个MyBatis程序
- # yyds干货盘点 # 一篇文章教会你Python中三种简单函数的使用
- 通过docker日志目录查询相应服务
- #yyds干货盘点#nginx路径重写
- 如何快速开发数字孪生可视化应用()