Есть ли способ получить API связанных сообщений в WordPress? - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно создать API, который будет отображать пост по категориям. Я написал код в своем файле functions.php, но я не получил, как я могу передать идентификатор сообщения в аргументы?

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. Итак, мне нужно передать этот идентификатор в соответствующие аргументы API, которые я сейчас передал как static (180)

Изображение API текущего поста, из которого мне нужно отобразить связанный API Current post API from which I need to render a related API

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы можете добавить в свой маршрут отдыха параметр с именем post_id, а затем получить доступ к идентификатору из массива request_data.

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'
    ));

});

Вы можете добавить идентификатор в конец вашего URL-вызова/post/related/183.

1 голос
/ 08 марта 2019

Вы можете получить идентификатор сообщения, как обычный запрос на получение.?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'
    ));
});

Теперь ваш URL-адрес API должен выглядеть следующим образом /post/related?post_id=183 Попробуйте, а затем дайте мне знать результат.

...