You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加速WordPress中雇主查询可用Freelancer的日期搜索请求?

插件功能概述
  • 雇主可通过插件搜索并雇佣自由职业者(Freelancer)。
  • Freelancer能通过日历选择日期,将这些日期标记为可工作状态。
    Freelancer日历选择界面
  • 雇主通过选择起止日期(from和to)搜索符合条件的可用Freelancer,之后可将其加入候选名单或发送工作简报。
当前遇到的问题

当雇主选择的起止日期间隔天数较多时,查询会超时。

已尝试的解决方案及问题

方案1:将可用日期存入user_meta数组,使用LIKE查询

代码实现如下:

$date_query = array();

if ( ! empty( $from ) && ! empty( $to ) ) {

  $start = new DateTime( $from );
  $end = new DateTime( $to );
  $end = $end->modify( '+1 day' ); // 包含结束日期
  $interval = new DateInterval( 'P1D' ); // 1天间隔
  $date_range = new DatePeriod( $start, $interval ,$end );
  $date_query = [ 'relation' => 'AND' ];

  foreach( $date_range as $date ) {

    $date_query[] = array(
      'key' => 'fmaa_available_dates',
      'value' => $date->format( 'Y-m-d' ),
      'compare' => 'LIKE'
    );

  }

}

问题:由于使用LIKE操作,当日期间隔天数较多时,查询必然超时。

方案2:将日期存入独立的user_meta,使用IN查询

通过添加独立的user_meta存储每个可用日期,查询代码如下:

if ( ! empty( $from ) && ! empty( $to ) ) {

  $start = new DateTime( $from );
  $end = new DateTime( $to );
  $end = $end->modify( '+1 day' ); // 包含结束日期
  $interval = new DateInterval( 'P1D' ); // 1天间隔
  $date_range = new DatePeriod( $start, $interval ,$end );
  $date_query = [ 'relation' => 'AND' ];

  foreach ( $date_range as $date ) {

    $date_query[] = array(
      'key' => 'fmaa_availability_dates',
      'value' => $date->format( 'Y-m-d' ),
      'compare' => 'IN'
    );

  }

}

问题:同样因为天数过多,查询耗时过久导致超时。

内容的提问来源于stack exchange,提问作者Muhammad Zohaib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:12:36