При регистрации пользователя, если отправлено приветственное письмо, добавьте сообщение с новым пользователем в качестве автора
Я пытаюсь создать новое сообщение (позже преобразую его в пользовательский тип сообщения) всякий раз, когда новый пользователь регистрируется на веб-сайте и если приветственное электронное письмо было успешно отправлено. Проблема в том, что я хочу добавить нового пользователя в качестве автора нового сообщения. Позже все уведомления по электронной почте будут доступны со специальной страницы.
Я пытаюсь использовать фильтр 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;
}
Я не знаю, как получить идентификатор пользователя.
Есть идеи?
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
. Конечно, вы можете создать новую должность в соответствии с вашими потребностями.