如何在 Wordpress rest_api_init 回调函数中传递参数
Posted
技术标签:
【中文标题】如何在 Wordpress rest_api_init 回调函数中传递参数【英文标题】:How to pass a parameter in Wordpress rest_api_init callback function 【发布时间】:2021-02-08 22:26:11 【问题描述】:我有 1 个问题一直在尝试解决。当我搜索这样做时,我正在尝试遵循一些示例,但我并不是很成功......一直在尝试遵循这样的东西...... https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
-
如何在回调中传递参数/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 起作用。我就是想不通……这一切都是新手……
任何帮助都会很好。
【问题讨论】:
【参考方案1】:没关系...我想通了...这是我正在寻找的解决方案
add_action( 'rest_api_init', function ()
register_rest_route( 'myplugin/v1', '/day/(?P<day>([12]\d3-(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;
【讨论】:
以上是关于如何在 Wordpress rest_api_init 回调函数中传递参数的主要内容,如果未能解决你的问题,请参考以下文章