0

ブログ投稿 (wp-post) は、buddypress のインストールですぐにアクティビティ ストリームに表示されませんでした。そこで、bp-acitivity-actions.php に次のコードを追加しました。$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');

ありがとう。

4

2 に答える 2

0

$user_idアクティビティ アイテムがユーザーの個人用ストリームに表示されるようにするには、関数内の変数bp_activity_add()をユーザーの ID に設定する必要があります。値が正しく設定されていることを確認してください。

ここで、ユーザー ID の取得は、必要な特定のユーザーによって若干異なります。例えば:

  • bp_loggedin_user_id()現在ログインしているユーザーのIDを取得します
  • bp_displayed_user_id()現在表示されているユーザーのIDを返します

ユースケースに適した関数を使用する必要があります。

于 2015-11-02T23:39:30.883 に答える
0

wp_get_current_user()単一の変数ではなく、オブジェクトを返します。https://codex.wordpress.org/Function_Reference/wp_get_current_user

またはbp_loggedin_user_id()、ヘンリーライトが言うように使用できます。

だから私は bp-acitivity-actions.php にコードを追加しました

コア ファイルは変更しないでください。関数は、theme/functions.php に入れることができます。

于 2015-11-03T15:12:34.943 に答える