0

在我安装的 buddypress 中,博客文章(wp-post)没有出现在开箱即用的活动流中。所以我在 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');

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

在我用 wp_get_current_user() 返回的局部变量 $user_id 替换全局 $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');

谢谢。

4

2 回答 2

0

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

或者你可以bp_loggedin_user_id()像 henrywright 说的那样使用。

所以我在 bp-acitivity-actions.php 中添加了一段代码

您不应该更改核心文件。您的函数可以进入您的主题/functions.php。

于 2015-11-03T15:12:34.943 回答
0

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

现在,根据您需要的特定用户,获取用户 ID 会略有不同。例如:

  • bp_loggedin_user_id()将为您获取当前登录用户的 ID
  • bp_displayed_user_id()返回当前显示用户的 ID

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

于 2015-11-02T23:39:30.883 回答