我有一个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秒钟才能显示任何结果。
任何人都可以推荐一种使用多个过滤器进行此类查询的更好方法吗?
预先感谢。
首先,您的所有代码就像魅力一样,没有更好的方法来执行wp_query();。它需要5到10秒,因为需要检查很多条件,并且完全取决于必须执行过滤的数据。
我看到了整个代码,只需要一点更改即可通过两次通过相同的参数,即post_per_page,请更正。否则,最好执行WP_QUERY。