【问题标题】:How to pass a parameter in Wordpress rest_api_init callback function如何在 Wordpress rest_api_init 回调函数中传递参数
【发布时间】:2021-02-08 22:26:11
【问题描述】:

我有 1 个问题一直在尝试解决。当我搜索这样做时,我正在尝试遵循一些示例,但我并不是很成功......一直在尝试遵循这样的东西...... https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

  1. 如何在回调中传递参数/args

下面的这段代码确实有效。我想要的逻辑是,当您选择一天(Y-m-d)格式时,它会返回从开始时间到管理员用户在 wordpress 中选择的结束时间的所有可用时间。

这是我的 rest_api_init

    add_action( 'rest_api_init', function () {
      register_rest_route( 'myplugin/v1', '/day/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
        ) );
} );

这里是回调函数

function my_awesome_func($request) {
        $selected_day = '2020-05-05';
      $startTime = esc_attr( get_option( 'start_time' )); //this works can hard coded as (10:30)
      $endTime = esc_attr( get_option( 'end_time' )); // also works can hard coded (20:00)
      $minutesApart = esc_attr( get_option( 'minutes_between')); //also works hard coded (15)
      $data = array();
              $exploded_daydate = explode('-', $selected_day);
              $start_time_raw = $startTime;
              $end_time_raw = $endTime;
              $start_time_Exploded = (explode(":",$start_time_raw));
              $end_time_Exploded = (explode(":",$end_time_raw));
              $loopStart = mktime($start_time_Exploded[0], $start_time_Exploded[1], 0, $exploded_daydate[1], $exploded_daydate[2], $exploded_daydate[0]);
              $loopEnd = mktime($end_time_Exploded[0], $end_time_Exploded[1], 0, $exploded_daydate[1], $exploded_daydate[2], $exploded_daydate[0]);
              $i=0;
              while ($loopStart <= $loopEnd) {
                $data[$i] = date("Y-d-m h:i:s",$loopStart);
              $loopStart = $loopStart + ($minutesApart *60);
              $i++;
              }
              return $data;
              }

现在我对 ($selected_day = '2020-05-05';) 进行了硬编码,但我希望通过在 URL 端点末尾接受 (Y-m-d) 格式来使端点 url 起作用。我就是想不通……这一切都是新手……

任何帮助都会很好。

【问题讨论】:

    标签: php wordpress-rest-api


    【解决方案1】:

    没关系...我想通了...这是我正在寻找的解决方案

    add_action( 'rest_api_init', function () {
      register_rest_route( 'myplugin/v1', '/day/(?P<day>([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])))', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
        
      ) );
    } );
    
        function my_awesome_func($request) {
            $selected_day = $request['day'];
          $startTime = esc_attr( get_option( 'start_time' ));
          $endTime = esc_attr( get_option( 'end_time' ));
          $minutesApart = esc_attr( get_option( 'minutes_between'));
          $data = array();
                  $exploded_daydate = explode('-', $selected_day);
                  $start_time_raw = $startTime;
                  $end_time_raw = $endTime;
                  $start_time_Exploded = (explode(":",$start_time_raw));
                  $end_time_Exploded = (explode(":",$end_time_raw));
                  $loopStart = mktime($start_time_Exploded[0], $start_time_Exploded[1], 0, $exploded_daydate[1], $exploded_daydate[2], $exploded_daydate[0]);
                  $loopEnd = mktime($end_time_Exploded[0], $end_time_Exploded[1], 0, $exploded_daydate[1], $exploded_daydate[2], $exploded_daydate[0]);
                  $i=0;
                  while ($loopStart <= $loopEnd) {
                    $data[$i] = date("Y-m-d h:i:s",$loopStart);
                  $loopStart = $loopStart + ($minutesApart *60);
                  $i++;
                  }
                  return $data;
                  }
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2013-02-07
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      相关资源
      最近更新 更多