gpt4 book ai didi

php - 如果嵌套的meta_query不正常,我该如何改进WordPress中的这个查询?

转载 作者:行者123 更新时间:2023-11-29 12:49:00 24 4
gpt4 key购买 nike

我有这个问题,正在过滤带有价格条件的房间。

用户会搜索价格低于500且有电视冷/热水淋浴的房间。

Legend:    
rw_prop_price = amount
rw_prop_rooms1 = checkbox with/without TV
rw_prop_rooms2 = checkbox with/without Tub
rw_prop_rooms3 = checkbox with/without cold/hot shower

这是我的代码,但它不起作用,因为不可能使用嵌套的元查询。

$args = array(
'post_type' => 'rw_property',
'posts_per_page' => 10,
'paged' => get_query_var('paged'),
'relation'=> 'AND',
'meta_query' => array(
'relation' => 'AND',
array(
'key' =>'rw_prop_price',
'value' => 500,
'type' => 'numeric',
'compare' => '<'
),
array(
'relation' => 'OR',
array(
'key' =>'rw_prop_rooms1',
'value' => 'yes',
'compare' => '='
),
array(
'key' =>'rw_prop_rooms2',
'value' => 'no',
'compare' => '='
),
array(
'key' =>'rw_prop_rooms3',
'value' => 'yes',
'compare' => '='
)
)
),
'post_status' => 'publish'
);
$wp_query = new WP_Query( $args );

任何人都可以帮助我如何做到这一点,我想尽可能地继续使用 WordPress 的 WP_Query。但我愿意重组我的数据,我的意思是如果你有一个解决方案,比如组合 3 个房间,序列化等等,只要它能帮助我,非常感谢。

最佳答案

如果您想使用 WP_Query 那么我认为您必须按一个自定义值进行过滤,将其全部保存到一个数组中,然后过滤掉与搜索条件不匹配的值。确保查询的元值将为您提供平均最少的点击次数(以最小化 PHP 的负载)。这可能是也可能不是一个好主意,具体取决于您要获取的数据量,但这里有一个示例:

查询

$args = array(
'post_type' => 'rw_property',
'posts_per_page' => -1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' =>'rw_prop_price',
'value' => 500,
'type' => 'numeric',
'compare' => '<'
)
),
'post_status' => 'publish'
);
$wp_query = new WP_Query( $args );

.

过滤器

$results = array();

# Set these values based on user input (search filter settings)
$tv = 'yes';
$hot_tub = 'no';
$shower = 'yes';

# Iterate through all the posts, and select only the ones that match our criteria
while ( $wp_query->have_posts() ) : $wp_query->the_post();

if(
get_post_meta( get_the_ID(), 'rw_prop_rooms1', true ) == $tv &&
get_post_meta( get_the_ID(), 'rw_prop_rooms2', true ) == $hot_tub &&
get_post_meta( get_the_ID(), 'rw_prop_rooms3', true ) == $shower
)

# Store the post object if criteria matches
$results[] = $wp_query;

endwhile;

.

演示

foreach( $results as $post ) 
echo $post->post_title;

.

这完全未经测试,因此不能保证代码能够运行。它还会搞乱你的分页,我想这可能是你的情况的一个问题(你必须建立自己的分页)。但我认为,如果你想比较 WordPress 中的许多自定义值,你需要这样做。如果有更简单的方法我也有兴趣学习。

关于php - 如果嵌套的meta_query不正常,我该如何改进WordPress中的这个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com