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

WordPress REST API:如何获取事件日历的原始数据库内容?

获取自定义文章类型REST API的原始数据库数据

嘿,这个问题我之前也碰到过!WordPress默认的REST API会自动把内容经过the_content这类过滤器处理,所以返回的content.rendered是HTML格式的,但其实它已经给我们留了原始数据的入口,而且我们也可以自定义调整响应内容。

先看最简单的方法:用默认自带的原始字段

WordPress的WP_REST_Posts_Controller在返回文章内容时,content是一个包含两个属性的对象:

  • rendered:处理后的HTML内容,也就是你现在看到的
  • raw:直接从数据库读取的原始未过滤内容

你打开你提供的API链接,查看每个event对象里的content.raw字段,就能拿到你要的原始数据库数据啦,完全不用额外改代码!

如果需要自定义响应结构(比如添加单独的原始字段)

要是你想把原始数据放在更显眼的位置,或者需要修改其他字段的返回值,可以用rest_prepare_{post_type}过滤器来调整。把这段代码加到你的functions.php里:

add_filter( 'rest_prepare_event', 'customize_event_rest_raw_data', 10, 2 );
function customize_event_rest_raw_data( $response, $post ) {
    // 添加一个单独的原始内容字段,名字可以自己改
    $response->data['raw_content'] = $post->post_content;
    
    // 要是你想直接替换掉默认的HTML内容,改成返回原始数据,就用下面这行
    // $response->data['content']['rendered'] = $post->post_content;
    
    // 如果你还有自定义元字段(比如活动日期、地点这类),也可以在这里添加原始值
    // 比如获取名为event_date的自定义字段原始值:
    // $response->data['raw_event_date'] = get_post_meta( $post->ID, 'event_date', true );
    
    return $response;
}

针对自定义元字段的原始数据返回

如果你的event类型有自定义元字段,想要确保它们返回的是数据库里的原始值(而不是经过处理的),可以用register_rest_field来注册这些字段:

add_action( 'rest_api_init', 'register_event_raw_meta_fields' );
function register_event_raw_meta_fields() {
    // 注册event_date字段,返回原始值
    register_rest_field( 'event', 'event_date', array(
        'get_callback' => function( $post_data ) {
            return get_post_meta( $post_data['id'], 'event_date', true );
        },
        'schema' => array(
            'description' => '活动的原始日期数据',
            'type' => 'string',
        ),
    ) );
    
    // 可以继续添加其他自定义字段,比如event_location之类的
}

这样调整后,你就能完全控制REST API返回的原始数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:51