简单自定义 WP BP API 来自数据库 return 数据的端点 table

Simple custom WP BP API Endpoint to return data from a database table

我是一个 PHP 新手,正在尝试在我们的 BuddyPress 网站上扩展 Wordpress API。我已经创建了一个数据库 table,我计划用它来存储用户的朋友(或者在我们的特定情况下是“最喜欢的成员”)。我想使用用户 ID 作为输入(即“myapi/v1/favouritemembers/[用户 ID]”)向 return 用户的朋友编写一个 API 端点。这是我到目前为止所做的;

/*** Grab favourite members for a specified user ***/
function favourite_members( $data ) {
  $favourites = get_favourite_members(array(
    'user_id' => $data['user_id'],
  ) );

  if ( empty( $favourites ) ) {
    return null;
  }

  return $favourites;
}

function get_favourite_members( $data ){
  global $wpdb;
  $sql = $wpdb->prepare( "SELECT member_id FROM wp_my_favourite_members WHERE user_id = %d", $data['user_id'] );
  return $wpdb->get_results( $sql );
}

/*** Register register_rest_route ***/
add_action( 'rest_api_init', function () {
  register_rest_route( 'myapi/v1', '/favouritemembers/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'favourite_members',
  ) );
} );

我无法让它正常工作,端点只是 return 一个空响应。如果我替换查询 "SELECT member_id FROM wp_my_favourite_members WHERE user_id = %d", $data['user_id']"SELECT member_id FROM wp_my_favourite_members WHERE user_id = 1" 然后它按预期工作,所以我怀疑我处理 get_favourite_members 函数中的输入参数的方式可能有问题,但我是不确定。

我已经解决了,我已经差不多了,只是需要改变

register_rest_route( 'myapi/v1', '/favouritemembers/(?P<id>\d+)'

register_rest_route( 'myapi/v1', '/favouritemembers/(?P<user_id>\d+)'

因此参数名称匹配。