WP_Query - 使用多个meta_query加载延迟

时间:2017-03-07 09:51:29

标签: wordpress args

我有一个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秒才能显示任何结果。

有人可以推荐一种更好的方法来使用多个过滤器进行此类查询吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

首先你的代码就像一个魅力,没有更好的方法来执行wp_query();.这需要5到10秒,因为需要检查很多条件,这完全取决于它必须进行过滤的数据。

我看到了整个代码,只需要稍微改变一下你传递相同的参数两次,即posts_per_page请更正它。否则最好执行wp_query。