В моей установке buddypress пост блога (wp-post) не появлялся в потоке активности из коробки. Поэтому я добавил кусок кода в bp-acitivity-actions.php:
function buddypress_edit_blog_post ($ post_id) {
глобальный $ 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');
Благодарю.
Переменная $user_id
внутри вашего bp_activity_add()
Функция должна быть установлена на идентификатор пользователя, чтобы элемент активности отображался в личном потоке этого пользователя. Убедитесь, что значение установлено правильно.
Теперь получение идентификатора пользователя немного отличается в зависимости от конкретного пользователя, который вам нужен. Например:
bp_loggedin_user_id()
получите идентификатор пользователя, который в данный момент вошел в системуbp_displayed_user_id()
возвращает идентификатор отображаемого в данный момент пользователяВы должны использовать функцию, соответствующую вашему варианту использования.
wp_get_current_user()
возвращает объект, а не одну переменную. https://codex.wordpress.org/Function_Reference/wp_get_current_user
Или вы можете использовать bp_loggedin_user_id()
как говорит Генрирайт.
Поэтому я добавил кусок кода в bp-acitivity-actions.php
Вы не должны менять основные файлы. Ваша функция может идти в вашей теме / functions.php.