При регистрации пользователя, если отправлено приветственное письмо, добавьте сообщение с новым пользователем в качестве автора


Я пытаюсь создать новое сообщение (позже преобразую его в пользовательский тип сообщения) всякий раз, когда новый пользователь регистрируется на веб-сайте и если приветственное электронное письмо было успешно отправлено. Проблема в том, что я хочу добавить нового пользователя в качестве автора нового сообщения. Позже все уведомления по электронной почте будут доступны со специальной страницы.

Я пытаюсь использовать фильтр wp_mail:

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('Y-m-d H:i:s'),
        'post_content'  => $new_wp_mail,
        'post_status'   => 'publish',
        'post_date'     => date('Y-m-d 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;
}

Я не знаю, как получить идентификатор пользователя.

Есть идеи?

Author: Grávuj Miklós Henrich, 2015-06-18

1 answers

Вместо использования wp_mail фильтра используйте действие 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( 'Y-m-d 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 );

Исходя из предположения, что вы хотите, чтобы этот пользователь позже публиковал другие сообщения, я изменил его роль на author. Конечно, вы можете создать новую должность в соответствии с вашими потребностями.

 2
Author: Frank P. Walentynowicz, 2015-06-19 17:32:29