Hi,
ich würde gerne innerhalb einer Gruppe einen Button erstellen, welcher es dem User ermöglicht, dem Gruppen-Autor direkt eine Nachricht zu schreiben.
Damit will ich vermeiden, dass der Nutzer erst in seine Nachrichten gehen muss und dort dann die Nachricht verfassen muss. Im Anschluss wäre er dann nicht mehr in der Gruppe, was die Usability verschlechtert.
Ich habe aktuell das Formular in einem Modal (Bootstrap) untergebracht und mir eine Funktion aus folgendem Plugin gezogen: https://wordpress.org/plugins/bp-profile-message-ux/
Momentan sieht es wie folgt aus:
<?php
// send a Private Message
function bp_profile_message_ux_send_private_message() {
if ( !is_user_logged_in() || !isset($_POST['private-message-hidden']) )
return;
check_admin_referer("private_message_check");
$content_feedback_empty = __( 'Please enter some content in the Private Message form.', 'bp-profile-message-ux' );
$content_feedback_success = __( 'Private Message was sent!', 'bp-profile-message-ux' );
$content_feedback_error = __( 'There was an error sending that Private Message. Please make sure you fill out both fields.', 'bp-profile-message-ux' );
// No private message so provide feedback and redirect
if ( empty( $_POST['private_message_content'] ) ) {
bp_core_add_message( $content_feedback_empty, 'error' );
bp_core_redirect( bp_displayed_user_domain() );
}
$sender_id = bp_loggedin_user_id();
$recip_id = get_the_author_id();
if ( $thread_id = messages_new_message( array('sender_id' => $sender_id, 'subject' => $_POST['private_message_subject'], 'content' => $_POST['private_message_content'], 'recipients' => $recip_id ) ) )
bp_core_add_message( $content_feedback_success );
else
bp_core_add_message( $content_feedback_error, 'error' );
bp_core_redirect( bp_displayed_user_domain() );
}
add_action( 'wp', 'bp_profile_message_ux_send_private_message', 3 );
?>
<form action="<?php bp_profile_message_ux_send_private_message(); ?>" method="post" id="send_message_form" class="standard-form" role="main" enctype="multipart/form-data">
<?php do_action( 'bp_before_messages_compose_content' ); ?>
<?php bp_message_get_recipient_tabs(); ?>
<?php if ( bp_current_user_can( 'bp_moderate' ) ) : ?>
<div class="checkbox">
<label>
<input type="checkbox" id="send-notice" name="send-notice" value="1" /> <?php _e( "This is a notice to all users.", "buddypress" ); ?>
</label>
</div>
<?php endif; ?>
<div class="form-group">
<label for="subject"><?php _e( 'Subject', 'buddypress'); ?></label>
<input type="text" name="subject" class="form-control" placeholder="<?php _e( 'Subject', 'buddypress'); ?>" id="subject" value="<?php echo 'Frage zu: '.get_the_title().''; ?>" />
</div>
<div class="form-group">
<label for="content"><?php _e( 'Message', 'buddypress'); ?></label>
<textarea name="content" class="form-control" id="message_content" rows="15" cols="40" placeholder="Bitte gib hier eine Frage ein"></textarea>
</div>
<div class="form-group">
<input type="hidden" name="send_to_usernames" id="send-to-usernames" value="<?php bp_message_get_recipient_usernames(); ?>" class="form-control <?php bp_message_get_recipient_usernames(); ?>" />
</div>
<?php do_action( 'bp_after_messages_compose_content' ); ?>
<div class="submit">
<input type="submit" value="<?php esc_attr_e( "Send Message", 'buddypress' ); ?>" class="btn btn-primary" name="send" id="send" />
</div>
<?php wp_nonce_field( 'messages_send_message' ); ?>
</form>
Alles anzeigen
Leider wird damit nichts validiert. Aber selbst das Absenden funktioniert nicht.
Kennt jemand eine passende Lösung?
Das Plugin kann ich leider in der Gruppe nicht nutzen, da es auf Profile beschränkt ist.