Size: a a a

WordPress Russian Community

2021 April 02

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
Короче, гоу ковырять код, а не ныть по чатикам, что дока плохая)
if(wp_verify_nonce($_POST['_wpnonce'],'order')){
           global $user_ID;
           global $user;
           $errors = array();

           // Проверка пользователя
           if($user_ID and is_user_logged_in()){

               // Если пользователь авторизован используем его данные
               $user = get_user_by('ID',$user_ID);
               $user_firstname = $user->user_firstname;
               $user_lastname = $user->user_lastname;
               $user_phone = get_user_meta($user_ID,'billing_phone',true);

           } else {

               // Иначе проверяем наличие пользователя по введённым данным
               if(!empty($_POST['email'])){

                   if(email_exists($_POST['email'])){

                       // Если пользователь найден, то записываем его user_ID
                       $user_ID = email_exists($_POST['email']);

                   } else {

                       // Иначе проверяем поля и регистрируем нового пользователя, получаем user_ID
                       if(!empty($_POST['first_name'])) $user_firstname = strval($_POST['first_name']); else $errors[] = ('Имя');
                       if(!empty($_POST['last_name'])) $user_lastname = strval($_POST['last_name']); else $errors[] = ('Фамилия');
                       if(!empty($_POST['email'])) $user_email = strval($_POST['email']); else $errors[] = ('Почта');
                       if(!empty($_POST['phone'])) $user_phone = strval($_POST['phone']); else $errors[] = ('Телефон');

                       // Если нет ошибок создаём пользователя
                       if(empty($errors)) {

                           $password = gen_pass();
                           $user_ID = wp_create_user( $user_phone, $password, $user_email );

                           // Если пользователь успешно зарегистрирован то авторизуем его,
                           // обновим данные и вышлем письмо с паролем
                           if (!is_wp_error( $user_ID ) ) {

                               $user_data = [
                                   'ID'              => $user_ID,
                                   'first_name'      => $user_firstname,
                                   'last_name'       => $user_lastname
                               ];
                               $user_ID = wp_update_user($user_data);

                               if ( is_wp_error( $user_ID ) ) {
                                   // Произошла ошибка, возможно такого пользователя не существует.
                               }
                               else {
                                   update_user_meta($user_ID, 'billing_phone', $user_phone);
                               }

                               // Авторизовываем пользователя
                               $creds = array();
                               $creds['user_login'] = $user_email;
                               $creds['user_password'] = $password;
                               $creds['remember'] = true;

                               //$user = wp_signon( $creds, false );

                               // После успешной регистрации, отправляем письмо и делаем редирект
                               $sent_message = wp_mail($user_email,'Регистрация на сайте',"Ваша почта: $user_email \nВаш пароль: $password");
                           } else {

                               // Фиксируем ошибку регистрации пользователя
                               $errors[] = ('Произошла ошибка при регистрации пользователя');

                           }

                       }
                   }
               }
           }
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
Ладно, не нужно напрягать сильно мозг: заказы привязываются к почте, как и все пользователи в WP. Но этот email еще откуда-то взять надо, мне кажется. Можно, в принципе, фейковые генерить, конечно
Успокоился?)
источник

A

Anton in WordPress Russian Community
Евгений Гурьев
if(wp_verify_nonce($_POST['_wpnonce'],'order')){
           global $user_ID;
           global $user;
           $errors = array();

           // Проверка пользователя
           if($user_ID and is_user_logged_in()){

               // Если пользователь авторизован используем его данные
               $user = get_user_by('ID',$user_ID);
               $user_firstname = $user->user_firstname;
               $user_lastname = $user->user_lastname;
               $user_phone = get_user_meta($user_ID,'billing_phone',true);

           } else {

               // Иначе проверяем наличие пользователя по введённым данным
               if(!empty($_POST['email'])){

                   if(email_exists($_POST['email'])){

                       // Если пользователь найден, то записываем его user_ID
                       $user_ID = email_exists($_POST['email']);

                   } else {

                       // Иначе проверяем поля и регистрируем нового пользователя, получаем user_ID
                       if(!empty($_POST['first_name'])) $user_firstname = strval($_POST['first_name']); else $errors[] = ('Имя');
                       if(!empty($_POST['last_name'])) $user_lastname = strval($_POST['last_name']); else $errors[] = ('Фамилия');
                       if(!empty($_POST['email'])) $user_email = strval($_POST['email']); else $errors[] = ('Почта');
                       if(!empty($_POST['phone'])) $user_phone = strval($_POST['phone']); else $errors[] = ('Телефон');

                       // Если нет ошибок создаём пользователя
                       if(empty($errors)) {

                           $password = gen_pass();
                           $user_ID = wp_create_user( $user_phone, $password, $user_email );

                           // Если пользователь успешно зарегистрирован то авторизуем его,
                           // обновим данные и вышлем письмо с паролем
                           if (!is_wp_error( $user_ID ) ) {

                               $user_data = [
                                   'ID'              => $user_ID,
                                   'first_name'      => $user_firstname,
                                   'last_name'       => $user_lastname
                               ];
                               $user_ID = wp_update_user($user_data);

                               if ( is_wp_error( $user_ID ) ) {
                                   // Произошла ошибка, возможно такого пользователя не существует.
                               }
                               else {
                                   update_user_meta($user_ID, 'billing_phone', $user_phone);
                               }

                               // Авторизовываем пользователя
                               $creds = array();
                               $creds['user_login'] = $user_email;
                               $creds['user_password'] = $password;
                               $creds['remember'] = true;

                               //$user = wp_signon( $creds, false );

                               // После успешной регистрации, отправляем письмо и делаем редирект
                               $sent_message = wp_mail($user_email,'Регистрация на сайте',"Ваша почта: $user_email \nВаш пароль: $password");
                           } else {

                               // Фиксируем ошибку регистрации пользователя
                               $errors[] = ('Произошла ошибка при регистрации пользователя');

                           }

                       }
                   }
               }
           }
А за такое можно и бан схлопотать)
источник

АП

Артём Приходько... in WordPress Russian Community
Олег
Прошу меня простить если я своей тупостью мешаю вашей гениальности:), но не могли бы вы объяснить почему сервер не видит эту библу, когда она у меня подключена
URL не правильный
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
А за такое можно и бан схлопотать)
Просто ты задрал с вопросами которые вообще не катируются сейчас...)))
источник

АП

Артём Приходько... in WordPress Russian Community
Евгений Гурьев
Просто ты задрал с вопросами которые вообще не катируются сейчас...)))
хватит кормить троллей своей реакцией
источник

A

Anton in WordPress Russian Community
Евгений Гурьев
Просто ты задрал с вопросами которые вообще не катируются сейчас...)))
То есть, ты пытаешься написать код, который уже есть в WC и работает при оформлении заказа пользователем? Какой смысл-то?
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
То есть, ты пытаешься написать код, который уже есть в WC и работает при оформлении заказа пользователем? Какой смысл-то?
Нужно так)
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Артём Приходько
хватит кормить троллей своей реакцией
Понял😄👍🏻
источник

A

Anton in WordPress Russian Community
Евгений Гурьев
Просто ты задрал с вопросами которые вообще не катируются сейчас...)))
Вась, WC умеет сам заказ создавать, если пользователь его оформляет и вносит свои данные.
источник

О

Олег in WordPress Russian Community
Артём Приходько
URL не правильный
спасибо
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
Вась, WC умеет сам заказ создавать, если пользователь его оформляет и вносит свои данные.
Я хочу своё, мне нравится свой велосипед)
источник

A

Anton in WordPress Russian Community
Евгений Гурьев
Я хочу своё, мне нравится свой велосипед)
Ну напиши тогда свой плагин ВасяКоммерс
источник

A

Anton in WordPress Russian Community
зачем эти полумеры
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Anton
Ну напиши тогда свой плагин ВасяКоммерс
Как только я сообщу тебе об этом)))
источник

A

Anton in WordPress Russian Community
мне хватает WC
источник

АП

Артём Приходько... in WordPress Russian Community
Евгений Гурьев
Я хочу своё, мне нравится свой велосипед)
с вашим велосипедом потом будут проблемы. Например с безопасностью, и с другими плагинами, когда вы захотите подключить какую-нибудь доставку
источник

АП

Артём Приходько... in WordPress Russian Community
Евгений Гурьев
Проблема документации WC в том что она плохо расписана... очень много методов и классов) в принципе всё ясно и так, но у них много готовых методов для работы с классами WC, которые так же не описаны нормально
поэтому нужно читать не доку, а исходный код.
WC_Checkout->create_order()
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Артём Приходько
с вашим велосипедом потом будут проблемы. Например с безопасностью, и с другими плагинами, когда вы захотите подключить какую-нибудь доставку
Есть в этом рациональное зерно) но опять всё зависит от развития проекта... в общем об этом можно долго говорить..
источник

ЕГ

Евгений Гурьев... in WordPress Russian Community
Артём Приходько
поэтому нужно читать не доку, а исходный код.
WC_Checkout->create_order()
Не обращал внимания на этот класс, посмотрю, благодарю)
источник