有什么办法可以在wordpress中获取相关的帖子API?

时间:2019-03-08 12:24:45

标签: wordpress wordpress-rest-api

我需要创建一个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参数。

我需要从中渲染相关API的当前发布API的图像 Current post API from which I need to render a related API

2 个答案:

答案 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的末尾。