站点范围内的活动流中的新博客帖子,但不在个人活动流中

时间:2015-10-23 05:38:37

标签: php wordpress buddypress activity-streams

博客文章(wp-post)没有出现在我安装的buddypress的开箱即用的活动流中。所以我在bp-acitivity-actions.php中添加了一段代码:     function buddypress_edit_blog_post($ post_id){      global $ bp,$ user_id;      $ post = get_post($ post_id);      $ title = $ post-> post_title;      $ user_fullname = bp_core_get_user_displayname($ user_id);

 bp_activity_add(array(
'action' => $user_fullname.' updated ' . $title . ':',
'component' => 'blog_post',
'type' => 'update_post',
'primary_link' => get_permalink($post_id),
'user_id' => $user_id,
'content' => $post->post_content
 ));
}
add_action('edit_post', 'buddypress_edit_blog_post');

现在网站范围的活动正在显示用户的新博客帖子,但是,我仍然无法在个人活动流中看到它。 我不明白,为什么会这样? 我想知道哪一段代码正在管理个人活动流,我想知道它是如何工作的。

在用全局$ user_id替换wp_get_current_user()返回的局部变量$ user_id之后,没有任何改变。 这是我的代码的新版本:

function buddypress_edit_blog_post($post_id) {
 global $bp; //, $user_id;
 $user_id = wp_get_current_user();
 $post = get_post($post_id); 
 $title = $post->post_title;
 $user_fullname  = bp_core_get_user_displayname($user_id);

 bp_activity_add(array(
'action' => $user_fullname.' updated ' . $title . ':',
'component' => 'blog_post',
'type' => 'update_post',
'primary_link' => get_permalink($post_id),
'user_id' => $user_id,
'content' => $post->post_content
 ));

}
add_action('edit_post', 'buddypress_edit_blog_post');

感谢。

2 个答案:

答案 0 :(得分:0)

$user_id函数中的变量bp_activity_add()需要设置为用户ID,以便活动项目显示在该用户的个人信息流中。确保正确设置了值。

现在,获取用户的ID会略有不同,具体取决于您需要的特定用户。例如:

  • bp_loggedin_user_id()会为您提供当前登录用户的ID
  • bp_displayed_user_id()返回当前显示的用户的ID

您应该使用适合您的用例的功能。

答案 1 :(得分:0)

wp_get_current_user()返回一个对象,而不是单个变量。 https://codex.wordpress.org/Function_Reference/wp_get_current_user

或者你可以使用bp_loggedin_user_id()正如亨利赖特所说的那样。

  

所以我在bp-acitivity-actions.php

中添加了一段代码

您不应该更改核心文件。你的功能可以放在你的主题/ functions.php。