Buddypressのプライベートメッセージボタンを投稿内に表示させ、記事タイトルをメッセージタイトルに含ませる方法

会員サイトなどで、ユーザーが自由に投稿できるサイトの場合、投稿内から著者のユーザー宛にメッセージを送りたいときに使えます。
メッセージタイトルに投稿のタイトルも含まれるので、受け取ったユーザーは何の投稿に関するメッセージなのかが分かります。

functions.phpへの記述(メッセージボタンの内容と記事タイトルを含ませる)

function bpfr_pm_to_author() {	
echo '<a href="'.wp_nonce_url( bp_loggedin_user_domain() . bp_get_messages_slug() . '/compose/?r=' . get_the_author_meta( user_nicename ). '&subject=「' . get_the_title().'」' ) .' title="Private Message"">メッセージを送信</a>';
}


compose.phpへの記述(プライベートメッセージボタンから送信フォームに記事タイトルを受け取る)

Buddypressディフォルトのテーマを使用している場合
(bp-default/members/single/messages/compose.php)に記述し
それ以外のテーマの場合はBuddypressのテンプレートに直接記述します。
(buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/compose.php)

compose.php内subjectの記述を
<input type="text" name="subject" id="subject" value="<?php bp_messages_subject_value(); ?>" />

下記に書き換える
<input type="text" name="subject" id="subject" value="<?php if ( isset( $_GET['subject'] ) ) echo $_GET['subject']; else bp_messages_subject_value(); ?>" />

メッセージ送信ボタンを投稿記事内の任意の場所に表示させる

<?php //ログインしているユーザーにのみ表示
if ( is_user_logged_in() ) { ?>

<?php //メッセージ送信ボタン表示部分
bpfr_pm_to_author(); ?>

<?php //ログインしていないユーザーへの表示
}else{  ?>
メッセージの送信にはログインする必要があります
<?php }; ?>

コメント