Ich versuche, einen neuen Beitrag zu erstellen (später wird es in einen benutzerdefinierten Beitragstyp umgewandelt), wenn sich ein neuer Benutzer auf der Website registriert und die Begrüßungs-E-Mail erfolgreich gesendet wurde. Das Problem ist, dass ich den neuen Benutzer als den Autor des neuen Posts hinzufügen möchte. Später werden alle Benachrichtigungs-E-Mails von einer speziellen Seite aus zugänglich sein.
Ich versuche den wp_mail
Filter zu verwenden:
add_filter( 'wp_mail', 'my_wp_mail_filter' ); function my_wp_mail_filter( $args ) { $new_wp_mail = array( 'to' => $args['to'], 'subject' => $args['subject'], 'message' => $args['message'], 'headers' => $args['headers'], 'attachments' => $args['attachments'], ); $new_post = array( 'post_title' => $args['subject'] . ' - ' . date('Ymd H:i:s'), 'post_content' => $new_wp_mail, 'post_status' => 'publish', 'post_date' => date('Ymd H:i:s'), 'post_author' => $user_id, 'post_type' => 'post', 'post_category' => array(0) ); $post_id = wp_insert_post( $new_post ); return $new_wp_mail; }
Ich weiß nicht, wie ich die Benutzer-ID erhalten soll.
Irgendeine Idee?
Verwenden wp_mail
anstelle des wp_mail
Filters die Aktion user_register
:
function fpw_new_user_post( $user_id ) { global $wpdb; update_user_meta( $user_id, $wpdb->base_prefix . 'capabilities', array( 'author' => TRUE ) ); $new_post = array ( 'post_title' => 'User ' . get_user_by( 'id', $user_id )->user_login . ' registered @ ' . date( 'Ymd H:i:s', current_time( 'timestamp' ) ), 'post_content' => 'This is my first post.', 'post_status' => 'publish', 'post_author' => $user_id, 'post_category' => array( 0 ) ); $post_id = wp_insert_post( $new_post ); if ( 0 == $post_id ) { // do some error action } } add_action( 'user_register', 'fpw_new_user_post', 10, 1 );
Basierend auf der Annahme, dass dieser Benutzer später andere Beiträge veröffentlichen soll, habe ich seine Rolle als author
geändert. Natürlich können Sie einen neuen Beitrag Ihren Bedürfnissen anpassen.