我有一个Wordpress网站,它使用了很多过滤器来显示作业。
查询将按以下方式过滤作业: -
我正在运行的当前查询是: -
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page'=> -1,
'post_type' => 'jobs',
'order' => 'DESC',
'posts_per_page' => 20,
'paged' => $paged,
's' => $search_field,
'meta_query' => array(
'relation' => 'AND',
array(
array(
'key' => 'job_type',
'value' => $job_type,
'compare' => 'LIKE',
),
array(
'key' => 'job_location',
'value' => $job_location,
'compare' => 'LIKE',
),
array(
'key' => 'job_sector',
'value' => $job_sector,
'compare' => 'LIKE',
),
array(
'key' => 'international_job',
'value' => $international_job,
'type' => 'numeric',
'compare' => 'IN',
),
array(
'key' => 'job_location',
'value' => $location_array,
'compare' => 'NOT IN',
),
),
array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'key' => 'anual_to_salary',
'value' => array($job_salary_from,$job_salary_to),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
),
array(
'relation' => 'AND',
array(
'key' => 'anual_from_salary',
'value' => array($job_salary_from,$job_salary_to),
'type' => 'numeric',
'compare' => 'BETWEEN',
),
),
array(
'relation' => 'OR',
array(
'key' => 'job_negotiable',
'value' => 'yes',
'compare' => '=',
),
),
),
)
);
$fetch_jobs = new WP_Query( $args );?>
我认为这是一种不好的方式来进行此类查询,因为它需要大约5到10秒才能显示任何结果。
有人可以推荐一种更好的方法来使用多个过滤器进行此类查询吗?
提前致谢。
答案 0 :(得分:1)
首先你的代码就像一个魅力,没有更好的方法来执行wp_query();.这需要5到10秒,因为需要检查很多条件,这完全取决于它必须进行过滤的数据。
我看到了整个代码,只需要稍微改变一下你传递相同的参数两次,即posts_per_page请更正它。否则最好执行wp_query。