通过调用rest api的wordpress post view counter增加

时间:2018-08-03 10:25:35

标签: php wordpress metadata wordpress-rest-api

我有一些自定义帖子元用于统计视图,

image of api (http://www.test.com/wp-json/wp/v2/posts)

当我收到“ http://www.test.com/wp-json/wp/v2/posts/1234”(1234是帖子ID)时,我需要更新(增加++)帖子查看计数器

我搜索了很多,但没有找到任何东西,尽管我对这段代码感到满意:

add_action( 'rest_api_init', function () {
  register_rest_route( 'base', '/views/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'post_view_counter_function',
  ));
});
function post_view_counter_function( WP_REST_Request $request ) {
  $post_id = $request['id'];
if ( FALSE === get_post_status( $post_id ) ) {
    return new WP_Error( 'error_no_post', 'Not a post id', array( 'status' => 404 ) );
  } else {
    $current_views = get_post_meta( $post_id, 'views', true );
    $views = $current_views + 1;
    update_post_meta( $post_id, 'views', $views );
    return $views;
  }
}

但是上面代码的问题是单独的和自定义的端点,我需要通过每个html get请求将发布api(http://www.test.com/wp-json/wp/v2/posts/1234)的视图计数器(图像中的cd_plays)增加

请给我一个指南,我对此深信不疑

2 个答案:

答案 0 :(得分:0)

此代码中有许多更改 1. register_rest_route('base','/ views /(?P \ d +)',array(

更改为register_rest_route('base / v1',  如果您不希望进行重大更改,则可以使用以下网址, http://www.test.com/wp-json/base/v1/views/1234

答案 1 :(得分:0)

您还可以将获取的每页帖子数限制为1,这样就不会为了让帖子数而获得所有WordPress帖子。

http://demo.wp-api.org/wp-json/wp/v2/posts?per_page=1

谢谢