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

已能在entry.php使用bp_get_activity_content_body(),如何在bp-core-template.php调用?

在bp-core-template.php中调用bp_get_activity_content_body()的方法

嘿,别担心,新手阶段遇到这种函数调用的困惑太正常啦!我来帮你捋清楚怎么在bp-core-template.php里用上这个函数。

首先得明白:bp_get_activity_content_body()是BuddyPress用来获取活动内容的函数,它默认依赖当前的活动对象上下文——在entry.php里,这个上下文通常已经由活动循环或者模板逻辑自动设置好了,所以直接调用没问题,但bp-core-template.php作为核心模板文件,很多时候没有默认的活动对象,所以得手动处理上下文。

下面是两种可行的方法:

方法1:手动设置活动对象上下文

如果你知道要获取的活动ID,可以先获取活动对象,把它设为当前活动,再调用函数:

// 替换成你实际需要的活动ID
$target_activity_id = 123;

// 获取活动对象
$activity = bp_activity_get( array( 'activity_id' => $target_activity_id ) );

if ( $activity ) {
    // 设置当前活动上下文
    bp_set_current_activity( $activity );
    
    // 现在可以正常调用函数了
    $content = bp_get_activity_content_body();
    echo $content;
    
    // 可选:重置上下文,避免影响后续代码
    bp_reset_current_activity();
}

方法2:直接获取内容并应用过滤器

如果你不想依赖全局上下文,也可以直接从活动对象里取内容,再应用和bp_get_activity_content_body()一样的过滤器,这样输出效果和entry.php里的一致:

$target_activity_id = 123;
$activity = bp_activity_get( array( 'activity_id' => $target_activity_id ) );

if ( $activity ) {
    // 应用和函数相同的过滤器,保证内容处理逻辑一致
    $content = apply_filters( 'bp_get_activity_content_body', $activity->content );
    echo $content;
}

小提醒

别在bp-core-template.php的全局代码里直接调用哦!最好把这些代码放在合适的BuddyPress钩子中(比如bp_before_activity_loop、bp_activity_entry_content这类活动相关的钩子),或者在有活动对象上下文的代码块里使用,这样才不会出错~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:36:16