我需要创建一个API,该API将按类别过滤器呈现相关帖子。我已经在我的functions.php文件中编写了代码,但没有得到如何将帖子ID传递给参数的信息?
function related_posts_endpoint( $request_data ) {
$uposts = get_posts(
array(
'post_type' => 'post',
'category__in' => wp_get_post_categories(183),
'posts_per_page' => 5,
'post__not_in' => array(183),
)
);
return $uposts;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'sections/v1', '/post/related/', array(
'methods' => 'GET',
'callback' => 'related_posts_endpoint'
));
});
我需要传递当前API调用中的ID。因此,我需要将该ID传递给我目前以静态(180)传递的相关API参数。
答案 0 :(得分:1)
您可以像正常获取请求一样获取帖子ID。 ?key=value
并使用其广告$request['key']
,因此您的代码应像这样。
function related_posts_endpoint( $request_data ) {
$uposts = get_posts(
array(
'post_type' => 'post',
'category__in' => wp_get_post_categories(183),
'posts_per_page' => 5,
'post__not_in' => array($request_data['post_id']),//your requested post id
)
);
return $uposts;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'sections/v1', '/post/related/', array(
'methods' => 'GET',
'callback' => 'related_posts_endpoint'
));
});
现在您的api网址应该像这样/post/related?post_id=183
试试这个,然后让我知道结果。
答案 1 :(得分:1)
您可以在路由中添加一个名为post_id
的参数,然后从request_data
数组访问ID。
function related_posts_endpoint( $request_data ) {
$post_id = $request_data['post_id'];
$uposts = get_posts(
array(
'post_type' => 'post',
'category__in' => wp_get_post_categories($post_id),
'posts_per_page' => 5,
'post__not_in' => array($post_id),
)
);
return $uposts;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'sections/v1', '/post/related/(?P<post_id>[\d]+)', array(
'methods' => 'GET',
'callback' => 'related_posts_endpoint'
));
});
您可以将ID添加到URL调用/post/related/183
的末尾。