2015-10-23 3 views
0

Блог-пост (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 локальной переменной $ user_id, возвращаемой wp_get_current_user(), ничего не изменилось. Вот новая версия моего кода:

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'); 

Спасибо.

ответ

0

Переменная $user_id внутри вашей функции bp_activity_add() должна быть установлена ​​на идентификатор пользователя, чтобы элемент активности отображался в личном потоке этого пользователя. Убедитесь, что значение установлено правильно.

Теперь получение идентификатора пользователя несколько отличается в зависимости от конкретного пользователя, который вам нужен. Например:

  • bp_loggedin_user_id() поможет вам идентификатор пользователя вошедшего в
  • bp_displayed_user_id() возвращает идентификатор отображаемого в данный момент пользователь

Вы должны использовать функцию, соответствующую вашему прецеденту.

0

wp_get_current_user() возвращает объект, а не одну переменную. https://codex.wordpress.org/Function_Reference/wp_get_current_user

Или вы можете использовать bp_loggedin_user_id(), как говорит Генри.

Так я добавил кусок кода в п.о.-актив- ности-actions.php

Вы не должны изменять основные файлы. Ваша функция может войти в вашу тему/functions.php.