WP_QUERY-带有多个meta_query的负载延迟



我有一个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。

最新更新