如何将Youzify格式化的BuddyPress活动流内容封装为WordPress短代码
解决方案
问题根因
你直接include模板文件报错的核心原因是:BuddyPress和Youzify的活动流模板依赖提前加载的核心类、全局变量、工具函数,直接引入文件时这些前置依赖未被初始化,因此会触发大量未定义报错。另外你参考代码里存在低级错误:注册短代码时指定的回调函数名是activity_stream_func,实际定义的函数名是activity_stream,二者不匹配本身就会导致短代码失效。
正确实现代码
直接使用Youzify官方提供的活动流渲染方法,不需要手动引入模板文件:
add_shortcode( 'activity_stream', 'activity_stream_func' ); function activity_stream_func( $atts ) { // 可选:定义短代码参数,比如指定要加载的活动数量、用户ID等 $args = shortcode_atts( array( 'per_page' => 10, 'user_id' => 0, // 0表示加载所有用户活动 'scope' => 'all', ), $atts ); // 入队活动流依赖的样式和脚本,保证嵌入页面样式和原生一致 wp_enqueue_style( 'youzify-activity' ); wp_enqueue_script( 'youzify-activity' ); ob_start(); // 调用Youzify官方活动流渲染函数 if ( function_exists( 'youzify_activity' ) ) { youzify_activity( $args ); } elseif ( function_exists( 'bp_get_activity_template' ) ) { // 回退到BuddyPress原生渲染方法 bp_get_activity_template( $args ); } $output = ob_get_clean(); return $output; }
调用说明
- 直接在需要嵌入活动流的页面、文章、自定义HTML模块中使用
[activity_stream]短代码即可 - 如果需要自定义显示规则,可以传参调用,比如只显示15条动态:
[activity_stream per_page=15],只显示ID为2的用户动态:[activity_stream user_id=2]
内容的提问来源于stack exchange,提问作者Otávio T.
相关产品推荐
相关产品推荐

