You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WordPress REST API的wp/v2/posts/{post_id}获取文章点赞数?

解决方案:通过WordPress REST API获取文章点赞数

默认情况下,WordPress原生REST API和Jetpack插件都不会将点赞数包含在wp-json/wp/v2/posts/{post_id}的响应中,你可以通过以下两种方式实现需求:

方式一:自定义点赞功能并暴露到REST API

如果不想依赖第三方插件,完全自定义实现点赞计数并开放API:

  1. 注册REST字段,将点赞数添加到文章响应
    将以下代码添加到主题的functions.php文件或自定义插件中:

    function add_post_likes_to_rest_api() {
        register_rest_field( 'post',
            'likes_count',
            array(
                'get_callback'    => 'get_post_likes_count',
                'update_callback' => null,
                'schema'          => null,
            )
        );
    }
    add_action( 'rest_api_init', 'add_post_likes_to_rest_api' );
    
    function get_post_likes_count( $object ) {
        $post_id = $object['id'];
        // 获取存储的点赞数,默认返回0
        return get_post_meta( $post_id, 'post_likes_count', true ) ?: 0;
    }
    
  2. 可选:添加点赞接口(用于增加点赞数)
    如果需要通过API触发点赞操作,再添加以下代码:

    function register_like_post_endpoint() {
        register_rest_route( 'custom/v1', '/post/(?P<id>\d+)/like', array(
            'methods' => 'POST',
            'callback' => 'handle_like_post',
            'permission_callback' => function() {
                // 可根据需求修改权限,比如仅允许登录用户:return is_user_logged_in();
                return true;
            },
        ) );
    }
    add_action( 'rest_api_init', 'register_like_post_endpoint' );
    
    function handle_like_post( $request ) {
        $post_id = $request['id'];
        if ( !get_post( $post_id ) ) {
            return new WP_Error( 'invalid_post', '文章不存在', array( 'status' => 404 ) );
        }
        
        $current_likes = get_post_meta( $post_id, 'post_likes_count', true ) ?: 0;
        update_post_meta( $post_id, 'post_likes_count', $current_likes + 1 );
        
        return array( 'likes_count' => $current_likes + 1 );
    }
    

完成后,访问wp-json/wp/v2/posts/{post_id}即可在响应中看到likes_count字段。

方式二:适配Jetpack插件,将其点赞数暴露到REST API

如果你已经在使用Jetpack的点赞功能,可以直接读取它存储的点赞数据并添加到API响应:

将以下代码添加到functions.php或自定义插件:

function add_jetpack_likes_to_rest_api() {
    register_rest_field( 'post',
        'jetpack_likes_count',
        array(
            'get_callback'    => 'get_jetpack_likes_count',
            'schema'          => null,
        )
    );
}
add_action( 'rest_api_init', 'add_jetpack_likes_to_rest_api' );

function get_jetpack_likes_count( $object ) {
    $post_id = $object['id'];
    // 读取Jetpack存储的点赞数据
    $likes_data = get_post_meta( $post_id, '_jetpack_likes', true );
    // 返回点赞计数,默认0
    return isset( $likes_data['count'] ) ? $likes_data['count'] : 0;
}

之后访问wp-json/wp/v2/posts/{post_id}就能获取到jetpack_likes_count字段,对应Jetpack的点赞次数。

注意事项

  • 代码修改后建议清空缓存,确保REST API响应更新
  • 如果需要防止重复点赞,可以在点赞接口中添加逻辑(比如通过用户ID或Cookie记录已点赞状态)
  • 自定义代码优先放在自定义插件中,避免主题更新时丢失修改

内容的提问来源于stack exchange,提问作者Sumit Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:51:17