我创建了一个自定义函数,在Buddyboss/Buddypress中新撰写的私人消息末尾添加一个复选框,允许用户匿名发送消息。
如果选中该复选框,则发件人ID应为55,因为我创建了一个名为Anonymous的用户,其用户ID为55。如果选中该复选框,我希望邮件看起来就像是从该用户发送的。
下面是代码:
function bp_add_anonymous_checkbox() {
if ( bp_is_active( 'messages' ) ) {
// Only show the checkbox if the user is composing a private message
if ( bp_is_messages_component() && bp_is_current_action( 'compose' ) ) {
// Output the checkbox
?>
<p>
<label for="bp-anonymous-message">
<input type="checkbox" name="bp-anonymous-message" id="bp-anonymous-message" value="1">
Send this message anonymously
</label>
</p>
<?php
}
}
}
add_action( 'bp_after_messages_compose_content', 'bp_add_anonymous_checkbox' );
function bp_anonymous_message_handler( $recipients, $subject, $content, $date_sent ) {
// Check if the anonymous message checkbox was checked
if ( ! empty( $_POST['bp-anonymous-message'] ) ) {
// Set the sender of the message to the user with an ID of 55
$sender_id = 55;
} else {
// Otherwise, use the current user's ID as the sender
$sender_id = get_current_user_id();
}
// Send the message as usual
return messages_new_message( $recipients, $subject, $content, $date_sent, $sender_id );
}
add_filter( 'messages_message_before_save', 'bp_anonymous_message_handler', 10, 4 );
我已经成功地添加了这个函数,但是它似乎没有执行。我没有收到任何错误,它只是从来没有发送消息,也没有在我点击发送按钮后刷新。我相信这可能与我在最后添加的过滤器有关。我错过了什么吗?
1条答案
按热度按时间ttygqcqt1#
messages_message_before_save
不是一个过滤钩子,尽管它可以用来过滤参数。Review the context of the hook
Review do_action_ref_array