WordPress как на ладони
wordpress jino

wp_insert_user() WP 2.0

Вставляет данные пользователя в Базу Данных. Создает/обновляет пользователя.

Функция умеет обновлять данные существующего пользователя. Для этого нужно указать ID пользователя в передаваемых данных, в поле 'ID'.

Для обновления существующего пользователя, используйте: wp_update_user(), потому что эта функция не хэширует (скрывает) пароль.

Все логические значения в параметрах нужно передавать в виде строки: 'true' или 'false', потому что так они записываются в метаполя.

Используется в: wp_update_user(), wp_create_user().
Хуки из функции:
Возвращает

Число/WP_Error.

  • ID созданного пользователя.
  • WP_Error — если запрос провалился:

    • если логин слишком длинный
    • если юзер с таким логином уже есть
    • если в логине есть недопустимые символы или логин пустой
    • если указанный email уже существует
    • если указан ID юзера для обновления, а такого юзера в БД нет.

Использование

wp_insert_user( $userdata );

Шаблон использования

$userdata = array(
	'ID'              => 0,  // когда нужно обновить пользователя
	'user_pass'       => '', // обязательно
	'user_login'      => '', // обязательно
	'user_nicename'   => '',
	'user_url'        => '',
	'user_email'      => '',
	'display_name'    => '',
	'nickname'        => '',
	'first_name'      => '',
	'last_name'       => '',
	'description'     => '',
	'rich_editing'    => 'true', // false - выключить визуальный редактор
	'user_registered' => '', // дата регистрации (Y-m-d H:i:s) в GMT
	'role'            => '', // (строка) роль пользователя
	'jabber'          => '',
	'aim'             => '',
	'yim'             => '',
);

wp_insert_user( $userdata );
$userdata(массив) (обязательный)
Массив данных создаваемого пользователя.
По умолчанию: предустановки

Аргументы параметра $userdata

ID(число)
ID пользователя. Указывается только, если надо обновить данные уже существующего пользователя. Все обязательные параметры, становятся не обязательными.
user_pass(строка) (обязательный)
Пароль для создаваемого пользователя. Хэшируется.
user_login(строка) (обязательный)
Логин нового пользователя. Для дополнительной проверки логина, можно использовать фильтр: pre_user_login
user_nicename(строка)
Имя пользователя. Если не указать, будет как логин. Содержит очищенный для использования в URL логин - очищается через sanitize_title(). Например, если при регистрации указать в поле логина email user@example.com, то тут получим userexample-com. Используется в ссылке на архивную страницу автора, поэтому значение поля должно быть уникальным для каждого юзера.
user_url(строка)
Сайт. Фильтр: pre_user_url
user_email(строка)
Почта. Проверяется на существования в БД.
display_name(строка)
Отображаемое имя. Если пусто будет как логин.
nickname(строка)
Ник. Если пусто, будет как логин.
first_name(строка)
Имя.
last_name(строка)
Фамилия.
description(строка)
Немного о себе.
rich_editing(строка)
Включить (true) или нет (false) визуальный редактор.
По умолчанию - 'true'
user_registered(строка)
Дата регистрации. Формат: Y-m-d H:i:s. Если пусто, то текущая дата в диапазоне GMT.
role(строка)
Роль пользователя.
По умолчанию берется из настроек: get_option('default_role')
jabber(строка)
Профиль.
aim(строка)
Профиль.
yim(строка)
Профиль.

Дополнительные

admin_color(строка)
Тема админки.
По умолчанию 'fresh'
show_admin_bar_front(строка)
Показывать админ бар на сайте или нет.
По умолчанию 'true'
locale(строка)
Язык пользователя (локаль). Например: ru_RU. С WP 4.7.
По умолчанию ''

Примеры

#1. Создаем пользователя

Функция создания пользователя на основе переданных через POST запрос данных:

/**
 * Регистрация нового пользователя
 */
function new_user_registration() {
	// Проверим защитные поля
	if( !isset( $_POST['nonce'] ) || !wp_verify_nonce( $_POST['nonce'], 'vb_new_user' ) )
		die( 'Оооопс, все вышло из под контроля, попробуйте еще разок, но чуть позже?' );

	// Данные переданные в $_POST
	$userdata = array(
		'user_login' => $_POST['user'],
		'user_pass'  => $_POST['pass'],
		'user_email' => $_POST['mail'],
		'first_name' => $_POST['name'],
		'nickname'   => $_POST['nick'],
	);

	/**
	 * Проверять/очищать передаваемые поля не обязательно, 
	 * WP сделает это сам.
	 */

	$user_id = wp_insert_user( $userdata ) ;

	// возврат
	if( ! is_wp_error( $user_id ) ) {
		return true;
	} else {
		return $user_id->get_error_message();
	} 
}

#2. Обновим поле Веб-сайт у пользователя 1:

$user_id = 6;
$website = 'http://wordpress.org';
$userdata = array(
	'ID' => $user_id,
	'user_url' => $website
);

wp_insert_user( $userdata ) ;

Заметки

Фильтры с префиксом pre_ срабатывают до использования фильтруемого значения, все фильтры передают значение параметра:

  • pre_user_login
  • pre_user_nicename
  • pre_user_url
  • pre_user_email
  • pre_user_display_name
  • pre_user_nickname
  • pre_user_first_name
  • pre_user_last_name
  • pre_user_description

Код wp insert user: wp-includes/user.php VER 4.9.7

<?php
function wp_insert_user( $userdata ) {
	global $wpdb;

	if ( $userdata instanceof stdClass ) {
		$userdata = get_object_vars( $userdata );
	} elseif ( $userdata instanceof WP_User ) {
		$userdata = $userdata->to_array();
	}

	// Are we updating or creating?
	if ( ! empty( $userdata['ID'] ) ) {
		$ID = (int) $userdata['ID'];
		$update = true;
		$old_user_data = get_userdata( $ID );

		if ( ! $old_user_data ) {
			return new WP_Error( 'invalid_user_id', __( 'Invalid user ID.' ) );
		}

		// hashed in wp_update_user(), plaintext if called directly
		$user_pass = ! empty( $userdata['user_pass'] ) ? $userdata['user_pass'] : $old_user_data->user_pass;
	} else {
		$update = false;
		// Hash the password
		$user_pass = wp_hash_password( $userdata['user_pass'] );
	}

	$sanitized_user_login = sanitize_user( $userdata['user_login'], true );

	/**
	 * Filters a username after it has been sanitized.
	 *
	 * This filter is called before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $sanitized_user_login Username after it has been sanitized.
	 */
	$pre_user_login = apply_filters( 'pre_user_login', $sanitized_user_login );

	//Remove any non-printable chars from the login string to see if we have ended up with an empty username
	$user_login = trim( $pre_user_login );

	// user_login must be between 0 and 60 characters.
	if ( empty( $user_login ) ) {
		return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') );
	} elseif ( mb_strlen( $user_login ) > 60 ) {
		return new WP_Error( 'user_login_too_long', __( 'Username may not be longer than 60 characters.' ) );
	}

	if ( ! $update && username_exists( $user_login ) ) {
		return new WP_Error( 'existing_user_login', __( 'Sorry, that username already exists!' ) );
	}

	/**
	 * Filters the list of blacklisted usernames.
	 *
	 * @since 4.4.0
	 *
	 * @param array $usernames Array of blacklisted usernames.
	 */
	$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );

	if ( in_array( strtolower( $user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
		return new WP_Error( 'invalid_username', __( 'Sorry, that username is not allowed.' ) );
	}

	/*
	 * If a nicename is provided, remove unsafe user characters before using it.
	 * Otherwise build a nicename from the user_login.
	 */
	if ( ! empty( $userdata['user_nicename'] ) ) {
		$user_nicename = sanitize_user( $userdata['user_nicename'], true );
		if ( mb_strlen( $user_nicename ) > 50 ) {
			return new WP_Error( 'user_nicename_too_long', __( 'Nicename may not be longer than 50 characters.' ) );
		}
	} else {
		$user_nicename = mb_substr( $user_login, 0, 50 );
	}

	$user_nicename = sanitize_title( $user_nicename );

	// Store values to save in user meta.
	$meta = array();

	/**
	 * Filters a user's nicename before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $user_nicename The user's nicename.
	 */
	$user_nicename = apply_filters( 'pre_user_nicename', $user_nicename );

	$raw_user_url = empty( $userdata['user_url'] ) ? '' : $userdata['user_url'];

	/**
	 * Filters a user's URL before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $raw_user_url The user's URL.
	 */
	$user_url = apply_filters( 'pre_user_url', $raw_user_url );

	$raw_user_email = empty( $userdata['user_email'] ) ? '' : $userdata['user_email'];

	/**
	 * Filters a user's email before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $raw_user_email The user's email.
	 */
	$user_email = apply_filters( 'pre_user_email', $raw_user_email );

	/*
	 * If there is no update, just check for `email_exists`. If there is an update,
	 * check if current email and new email are the same, or not, and check `email_exists`
	 * accordingly.
	 */
	if ( ( ! $update || ( ! empty( $old_user_data ) && 0 !== strcasecmp( $user_email, $old_user_data->user_email ) ) )
		&& ! defined( 'WP_IMPORTING' )
		&& email_exists( $user_email )
	) {
		return new WP_Error( 'existing_user_email', __( 'Sorry, that email address is already used!' ) );
	}
	$nickname = empty( $userdata['nickname'] ) ? $user_login : $userdata['nickname'];

	/**
	 * Filters a user's nickname before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $nickname The user's nickname.
	 */
	$meta['nickname'] = apply_filters( 'pre_user_nickname', $nickname );

	$first_name = empty( $userdata['first_name'] ) ? '' : $userdata['first_name'];

	/**
	 * Filters a user's first name before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $first_name The user's first name.
	 */
	$meta['first_name'] = apply_filters( 'pre_user_first_name', $first_name );

	$last_name = empty( $userdata['last_name'] ) ? '' : $userdata['last_name'];

	/**
	 * Filters a user's last name before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $last_name The user's last name.
	 */
	$meta['last_name'] = apply_filters( 'pre_user_last_name', $last_name );

	if ( empty( $userdata['display_name'] ) ) {
		if ( $update ) {
			$display_name = $user_login;
		} elseif ( $meta['first_name'] && $meta['last_name'] ) {
			/* translators: 1: first name, 2: last name */
			$display_name = sprintf( _x( '%1$s %2$s', 'Display name based on first name and last name' ), $meta['first_name'], $meta['last_name'] );
		} elseif ( $meta['first_name'] ) {
			$display_name = $meta['first_name'];
		} elseif ( $meta['last_name'] ) {
			$display_name = $meta['last_name'];
		} else {
			$display_name = $user_login;
		}
	} else {
		$display_name = $userdata['display_name'];
	}

	/**
	 * Filters a user's display name before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $display_name The user's display name.
	 */
	$display_name = apply_filters( 'pre_user_display_name', $display_name );

	$description = empty( $userdata['description'] ) ? '' : $userdata['description'];

	/**
	 * Filters a user's description before the user is created or updated.
	 *
	 * @since 2.0.3
	 *
	 * @param string $description The user's description.
	 */
	$meta['description'] = apply_filters( 'pre_user_description', $description );

	$meta['rich_editing'] = empty( $userdata['rich_editing'] ) ? 'true' : $userdata['rich_editing'];

	$meta['syntax_highlighting'] = empty( $userdata['syntax_highlighting'] ) ? 'true' : $userdata['syntax_highlighting'];

	$meta['comment_shortcuts'] = empty( $userdata['comment_shortcuts'] ) || 'false' === $userdata['comment_shortcuts'] ? 'false' : 'true';

	$admin_color = empty( $userdata['admin_color'] ) ? 'fresh' : $userdata['admin_color'];
	$meta['admin_color'] = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $admin_color );

	$meta['use_ssl'] = empty( $userdata['use_ssl'] ) ? 0 : $userdata['use_ssl'];

	$user_registered = empty( $userdata['user_registered'] ) ? gmdate( 'Y-m-d H:i:s' ) : $userdata['user_registered'];

	$meta['show_admin_bar_front'] = empty( $userdata['show_admin_bar_front'] ) ? 'true' : $userdata['show_admin_bar_front'];

	$meta['locale'] = isset( $userdata['locale'] ) ? $userdata['locale'] : '';

	$user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $user_nicename, $user_login));

	if ( $user_nicename_check ) {
		$suffix = 2;
		while ($user_nicename_check) {
			// user_nicename allows 50 chars. Subtract one for a hyphen, plus the length of the suffix.
			$base_length = 49 - mb_strlen( $suffix );
			$alt_user_nicename = mb_substr( $user_nicename, 0, $base_length ) . "-$suffix";
			$user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $alt_user_nicename, $user_login));
			$suffix++;
		}
		$user_nicename = $alt_user_nicename;
	}

	$compacted = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' );
	$data = wp_unslash( $compacted );

	if ( ! $update ) {
		$data = $data + compact( 'user_login' );
	}

	/**
	 * Filters user data before the record is created or updated.
	 *
	 * It only includes data in the wp_users table wp_user, not any user metadata.
	 *
	 * @since 4.9.0
	 *
	 * @param array    $data {
	 *     Values and keys for the user.
	 *
	 *     @type string $user_login      The user's login. Only included if $update == false
	 *     @type string $user_pass       The user's password.
	 *     @type string $user_email      The user's email.
	 *     @type string $user_url        The user's url.
	 *     @type string $user_nicename   The user's nice name. Defaults to a URL-safe version of user's login
	 *     @type string $display_name    The user's display name.
	 *     @type string $user_registered MySQL timestamp describing the moment when the user registered. Defaults to
	 *                                   the current UTC timestamp.
	 * }
	 * @param bool     $update Whether the user is being updated rather than created.
	 * @param int|null $id     ID of the user to be updated, or NULL if the user is being created.
	 */
	$data = apply_filters( 'wp_pre_insert_user_data', $data, $update, $update ? (int) $ID : null );

	if ( $update ) {
		if ( $user_email !== $old_user_data->user_email ) {
			$data['user_activation_key'] = '';
		}
		$wpdb->update( $wpdb->users, $data, compact( 'ID' ) );
		$user_id = (int) $ID;
	} else {
		$wpdb->insert( $wpdb->users, $data );
		$user_id = (int) $wpdb->insert_id;
	}

	$user = new WP_User( $user_id );

	/**
 	 * Filters a user's meta values and keys immediately after the user is created or updated
 	 * and before any user meta is inserted or updated.
 	 *
 	 * Does not include contact methods. These are added using `wp_get_user_contact_methods( $user )`.
 	 *
 	 * @since 4.4.0
 	 *
 	 * @param array $meta {
 	 *     Default meta values and keys for the user.
 	 *
 	 *     @type string   $nickname             The user's nickname. Default is the user's username.
	 *     @type string   $first_name           The user's first name.
	 *     @type string   $last_name            The user's last name.
	 *     @type string   $description          The user's description.
	 *     @type bool     $rich_editing         Whether to enable the rich-editor for the user. False if not empty.
	 *     @type bool     $syntax_highlighting  Whether to enable the rich code editor for the user. False if not empty.
	 *     @type bool     $comment_shortcuts    Whether to enable keyboard shortcuts for the user. Default false.
	 *     @type string   $admin_color          The color scheme for a user's admin screen. Default 'fresh'.
	 *     @type int|bool $use_ssl              Whether to force SSL on the user's admin area. 0|false if SSL is
	 *                                          not forced.
	 *     @type bool     $show_admin_bar_front Whether to show the admin bar on the front end for the user.
	 *                                          Default true.
 	 * }
	 * @param WP_User $user   User object.
	 * @param bool    $update Whether the user is being updated rather than created.
 	 */
	$meta = apply_filters( 'insert_user_meta', $meta, $user, $update );

	// Update user meta.
	foreach ( $meta as $key => $value ) {
		update_user_meta( $user_id, $key, $value );
	}

	foreach ( wp_get_user_contact_methods( $user ) as $key => $value ) {
		if ( isset( $userdata[ $key ] ) ) {
			update_user_meta( $user_id, $key, $userdata[ $key ] );
		}
	}

	if ( isset( $userdata['role'] ) ) {
		$user->set_role( $userdata['role'] );
	} elseif ( ! $update ) {
		$user->set_role(get_option('default_role'));
	}
	wp_cache_delete( $user_id, 'users' );
	wp_cache_delete( $user_login, 'userlogins' );

	if ( $update ) {
		/**
		 * Fires immediately after an existing user is updated.
		 *
		 * @since 2.0.0
		 *
		 * @param int     $user_id       User ID.
		 * @param WP_User $old_user_data Object containing user's data prior to update.
		 */
		do_action( 'profile_update', $user_id, $old_user_data );
	} else {
		/**
		 * Fires immediately after a new user is registered.
		 *
		 * @since 1.5.0
		 *
		 * @param int $user_id User ID.
		 */
		do_action( 'user_register', $user_id );
	}

	return $user_id;
}

Cвязанные функции

Из метки: wp_insert (вставка в БД)

Еще из метки: Пользователи (_user)

Еще из раздела: Добавление/удаление юзеров

27 комментов
Полезные 5 Все
  • Владимир

    А подскажите как добавить в профиль пользователя новые поля и сделать их обязательными для заполнения ещё при регистрации?
    Спасибо.

    2
    Ответить6 лет назад #
    • Создаём поля telefon а при создании пользователя так.

      $user_id = wp_insert_user( $userdata ) ;
      if( ! is_wp_error( $user_id ) ) {
       update_user_meta($user_id, 'telefon','+7999-99-99');
      }
      Ответить3 года назад #
  • Наиль

    При создании нового пользователя show_admin_bar_front все равно вставляется со значением true, то же самое касается и некоторых других мета-данных. Таким образом, получается нет смысла их указывать в массиве аргументов функции?

    Ответить2.8 года назад #
    • Kama5409

      Там вот код:

      $meta['show_admin_bar_front'] = empty( $userdata['show_admin_bar_front'] ) ? 'true' : $userdata['show_admin_bar_front'];

      Смысл указывать должен быть. Вы может что-то не так делаете? Не знаю... unknw

      1
      Ответить2.8 года назад #
    • campusboy2857 cайт: www.youtube.com/c/wpplus

      Вы допустили, скорее всего, как и я ошибку. Аргумент show_admin_bar_front должен передавать строку (то есть 'false'), а не булево значение. Тоже хотел начать "ругаться", но ,перечитав документацию, увидел свой косяк.

      Ответить2.4 года назад #
      • Kama5409

        Спасибо за коммент, подправил описание немного на эту тему... thank_you

        Ответить2.4 года назад #
  • Здравствуйте. Подскажите, есть ли способ перехватить пароль вновь созданного пользователя через хук?
    И, кстати в разделе "заметки" вы ошибочно указали названия нескольких фильтров:
    pre_user_user_pass - такого в теле исходника нет вообще
    pre_user_user_login - надо pre_user_login
    pre_user_user_nicename - надо pre_user_nicename
    pre_user_user_url - надо pre_userurl
    pre_user_user_email - надо pre_user_email.

    Ещё раз спасибо за Ваш титанический труд.

    Ответить2.7 года назад #
    • Kama5409

      Судя по коду функции, через хук нельзя.

      1. Можно переопределить функцию wp_hash_password(), а в нее передается чистый пароль.

      Чтобы переопределить, нужно создать плагин и в нем просто создать функцию с называнием wp_hash_password(). Код можно взять родной и добавить свой туда. Но тут надо учитывать что с обновлением ВП код может измениться...

      1. В самой функции wp_hash_password() пароль передается в класс PasswordHash. Заглянул в PasswordHash::HashPassword() там нет хуков. Так что, видимо единственная возможность это переопределить функцию wp_hash_password().
      1
      Ответить2.7 года назад #
  • Алексей

    Возникла проблема при мигрировании пользователя со стороннего сайта в WP. Пишет "неправильный пароль или логин", хотя на сайте стоит простое хеширование md5. Можете посоветовать что делать в данном случае ? вообще можно ли в данную функцию передавать пароль в md5?

    Ответить2.4 года назад #
    • Kama5409

      MD5 передавать нельзя... Вам нужно сбросить пароль... Как обычно через сброс или через обновление пользователя с помощью wp_update_user()

      Ответить2.4 года назад #
      • campusboy2857 cайт: www.youtube.com/c/wpplus

        А если просто использовать "Экспорт" встроенным в сам движок?

        Ответить2.4 года назад #
        • Kama5409

          Какой экспорт, он тут при чем?

          Ответить2.4 года назад #
          • campusboy2857 cайт: www.youtube.com/c/wpplus

            Я почему-то подумал что он с WP в другой WP хочет пользователей перенести. Тогда бы "Экспорт" помог.

            Ответить2.4 года назад #
  • Андрей cайт: ypfirm.ru
      $userdata = array(
    	'user_pass'       => $user_password, // обязательно
    	'user_login'      => $json_decoded['email'], // обязательно
    	'user_url'        => 'http://urban-extreme.ru/wp-content/themes/gladiators/images/users/isakov.png',
    	'user_email'      => $json_decoded['email'],
    	'first_name'      => $json_decoded['name'],
    	'last_name'       => $json_decoded['surname'],
    	'description'     => 'Адрес: ' . $_SERVER['REMOTE_ADDR'] . ' Агент:' . $_SERVER['HTTP_USER_AGENT'],
    	'rich_editing'    => 'true', // false - выключить визуальный редактор
    	'phone'           => $json_decoded['phone'],
      'score'           => '0',
      'rang'            => 'Не оплачено'
    
      );

    Так создаю юзера на основе полученных данных с формы. Три последних поля кастомные. Как сделать так, чтобы можно было их использовать, чтобы они добавлялись через wp_insert_user( $userdata )?

    Ответить2.3 года назад #
    • campusboy2857 cайт: www.youtube.com/c/wpplus
      $user_id = wp_insert_user( $userdata );
      if( ! is_wp_error( $user_id ) ) {
        update_user_meta( $user_id, 'kpp', $_POST['kpp'] );
        update_user_meta( $user_id, 'ogrn', $_POST['ogrn'] );
        update_user_meta( $user_id, 'legal-address', $_POST['legal-address'] );
        update_user_meta( $user_id, 'actual-address', $_POST['actual-address'] );
      }else{
        echo $user_id->get_error_message();
      }
      2
      Ответить2.3 года назад #
  • Использование уникального email при регистрации можно обойти через фильтр pre_user_email, я правильно понял? Или проверка на уникальность все равно сработает и вернется WP_Error? Требуется регистрировать пользователей, не имеющих email.

    Ответить2.1 года назад #
    • campusboy2857 cайт: www.youtube.com/c/wpplus

      Проще наверное брать последний ID пользователя и добавлять +1, и регать такую почту, ну что-то типа 152@mail.ru. А можно рандомной число умножать на рандомное, шанс, что попадётся одинаковые маленький.

      1
      Ответить2.1 года назад #
      • Спасибо, этот вариант пришел в голову, но это, так сказать, костыль. Если для альтернативой будет только правка ядра, придется использовать рандом, вот только восстановление паролей на email завязан.. прописать бы всем email админа, было бы гуд..

        Ответить2.1 года назад #
    • Мда, глупый вопрос задал, посмотрел код функции - ни на что фильтр не повлияет. Либо править ядро, либо как посоветовал campusboy

      Ответить2.1 года назад #
      • Kama5409

        Подмена email неплохой костыль вроде бы: и волки сыты и овцы целы...

        Ответить2.1 года назад #
  • Иван

    Здравствуйте.
    Не нашел поля для ссылки на аватар, как можно при создании пользователя привязать аватарку?

    Ответить1.9 год назад #
    • campusboy2857 cайт: www.youtube.com/c/wpplus

      Привет. Аватарка подтягивается по почте с помощью сервиса Граватар.

      Ответить1.9 год назад #
      • Иван

        А можно как нибудь принудительно прописать ему url аватара, есть плагин для авторизации через соц сети "WordPress Social Login" он как-то приписывает аватарки соц сетей к профилям пользователей, я делаю нечто похожее но не знаю как привязать аватарки, должен же быть какой-то способ?

        Ответить1.9 год назад #
        • campusboy2857 cайт: www.youtube.com/c/wpplus

          Думаю, тут тогда надо использовать API соц. выбранной соцсети. Подтягивать с неё аватарку человека. При добавлении пользователя wp_insert_user, она возвратит его ID в случае успеха, а зная ID мы можем добавить c функции add_user_meta любые данные, в данном случае урл на картинку в соцсети. При выводе комментариев это надо учитывать. То есть проверять, если метаполе существует (то есть картинка есть), то выводим её, если нет, то пытаемся получить граватар по указанному мылу.

          1
          Ответить1.9 год назад #
          • Иван

            Благодарю за ответ.
            Да я тоже думал насчет прикрепление мета данных, но думал есть решение не такое костыльное, видимо только так придется сделать.

            Ответить1.9 год назад #
  • Vladimir

    Как быть, если при регистрации пользователя используются дополнительные данные, которых нет в стандартной таблице учета?
    Можно создать дополнительную таблицу. Но тогда, если регистрация использует две и более транзакции и при этом произошел сбой в любой из них, как отменить ранее сделанные транзакции?

    • Kama5409

      Что за задача? Какие транзакции? Почему метаданные юзеров не подходят?

Здравствуйте, !     Войти . Зарегистрироваться