Этот пост является второй частью из серии, над которой я работаю, в которой рассказывается об ассоциации метаданных WordPress, и первая часть включает в себя процесс программного создания пользователей WordPress (но это было пять лет назад!).
Я говорил об этом раньше, но со временем все меняется по мере того, как мы набираемся опыта, верно? И при работе над такой серией, я думаю, полезно иметь набор требований, которым мы можем следовать, по крайней мере, чтобы смоделировать, как это могло бы быть, если бы это произошло в реальном проекте.
Итак, в этом конкретном посте мы рассмотрим следующее:
- Получение информации о пользователе в определенном формате данных,
- Определение того, какая информация требуется для создания пользователя,
- Создание пользователя,
- Убедитесь, что наш код соответствует стандартам кодирования и удобочитаемости.
Звучит много, хотя я не собираюсь делать этот пост длинным. Тем не менее, если это то, что вы хотите узнать, как продумать или как решить, то мы идем.
Создание пользователей WordPress
Предположим, что кто-то — возможно, клиент или, может быть, даже просто вы сами — как информация, которая будет использоваться для создания пользователя. Для этого требуется, по крайней мере, следующая информация:
- имя пользователя,
- пароль,
- адрес электронной почты.
Когда дело доходит до создания имени пользователя, я предпочитаю использовать адрес электронной почты в качестве имени пользователя, потому что это гарантированно будет уникальным почти для всех, кто использует учетную запись.
Так что для этого урока я собираюсь использовать именно это. Что касается пароля, я сейчас расскажу о его генерации.
Наконец, вы можете предположить, что данные, которые у вас есть, поступают в любой форме: возможно, в формате JSON, возможно, в формате CSV, возможно, в формате XML. В любом случае, вам решать, как преобразовать эту информацию в PHP, чтобы вы могли легко работать с ней.
Чтобы не усложнять этот пост, я предполагаю, что у нас есть одна запись, и у нас будет информация, доступная в массиве. Это не означает, что он начинается в массиве, но это означает, что мы в конечном итоге помещаем его в массив.
1 Информация пользователя
Предположим, у нас есть человек по имени «Меган», которого мы собираемся добавить в систему. У нас есть адрес электронной почты, и все.
Пример персоны (художник, конечно 🙂
Но это нормально. Это костяк того, что нам нужно. Итак, возьмем эту информацию :
<?php
$user_info = array(
'email' => 'meghan@emaildomain.com',
'first_name' => 'Meghan',
'last_name' => 'McFarlin',
);
И превратить его во что-то, что мы можем использовать для создания учетной записи.
2 Создание учетной записи
Первое, что нам нужно сделать, это убедиться, что пользователь для этого адреса электронной почты еще не существует. Если да, то мы просто вернемся. Вы можете отобразить сообщение о настройках или другую информацию, чтобы конечный пользователь знал, что вы не создаете эту учетную запись, поскольку она уже существует.
Но это выходит за рамки данного поста.
Вместо этого мы собираемся вернуть :
<?php
// Read the email address - if it's - invalid or the user exists, then return.
$email = $user_info['email'];
if (! filter_var( $email, FILTER_VALIDATE_EMAIL) || username_exists( $email)) {
return;
}
Опять же, давайте предположим, что пользователь не существует. Если она этого не сделает — чего ей делать не следует (иначе нет смысла в этом посте 😏) — мы создадим для нее учетную запись.
Для этого нам нужен ее адрес электронной почты и пароль. К счастью, сгенерировать пароль просто:
<?php
$password = wp_generate_password( 16, false );
Итак, теперь мы можем взять адрес электронной почты и пароль и создать учетную запись пользователя.
<?php
// Grab the email and create a password.
$email = $user_info['email'];
$password = wp_generate_password( 12, false );
// Create the user and set her role.
$user_id = wp_create_user( $email, $password, $email );
// Set the user's role (and remove the previous role).
$user = new WP_User( $user_id );
$user->set_role( 'author' );
Обратите внимание, что в приведенном выше коде мы также устанавливаем роль. Способ сделать это — сначала получить экземпляр WP_User, а затем с помощью нашего $user_id установить роль.
Я предпочитаю использовать author, но есть ряд других, из которых вы можете выбирать (или использовать то, что есть в вашей структуре данных).
3 Разве это не больше?
И при этом ваш пользователь должен быть создан. Частично это во многом зависит от того, какой хук вы использовали, как вы внедрили его в свой процесс и как вы разрешаете администратору создавать учетные записи.
Это более сложная тема, которую я хотел бы осветить в будущем посте. Чтобы эта серия была максимально прямой и лаконичной, я стараюсь сосредоточиться на основных необходимых шагах.
Все остальное можно реализовать или приспособить к тому, что необходимо в соответствии с требованиями проекта.
Это просто создание учетной записи
Однако это всего лишь обработка программного создания пользователей WordPress. По сути, это просто создание одного пользователя.
Чтобы создать несколько пользователей, предположим, что у вас есть несколько массивов с информацией, которую вы можете просмотреть, а затем создать пользователей. Реализация одинакова, хотя она будет варьироваться от каждой учетной записи.
С учетом сказанного, завтра я собираюсь заняться программным созданием пост-контента программным путем. И после этого мы поговорим о том, как связать данного пользователя с данным контентом публикации и что мы можем с этим сделать (а также почему это вообще имеет значение).
Сообщения серии
- Ассоциация метаданных WordPress: как это сделать
- Программное создание пользователей WordPress
- Типы записей WordPress: абстракция для сущностей
- Ассоциация метаданных WordPress: связанные объекты
