# Login via Yandex ID — WordPress & WooCommerce

Готовый, современный и надежный WordPress-плагин для авторизации и быстрой регистрации пользователей на сайте через **Яндекс ID**. Полная интеграция с профилями WordPress и оформлением заказов в **WooCommerce**.

[![WordPress](https://img.shields.io/badge/WordPress-4.7%2B-blue.svg)](https://wordpress.org/plugins/login-via-yandex/)
[![PHP](https://img.shields.io/badge/PHP-7.4%20--%208.3-777bb4.svg)](https://php.net)
[![WooCommerce](https://img.shields.io/badge/WooCommerce-Compatible-96588a.svg)](https://woocommerce.com)
[![License: GPL v2](https://img.shields.io/badge/License-GPLv2-green.svg)](https://www.gnu.org/licenses/gpl-2.0.html)

---

## 🚀 Основные возможности версии 2.0.0

- 🎨 **Встроенный Конструктор кнопки Яндекс ID:**
  - **Вид кнопки:** `main` (основная с текстом), `additional` (дополнительная), `icon` (только иконка).
  - **Тема оформления:** `light` (светлая), `dark` (тёмная).
  - **Размеры:** `xs` (28px), `s` (36px), `m` (44px, стандарт), `l` (52px), `xl` (60px), `xxl` (68px).
  - **Тип иконки:** `ya` (русская «Я»), `yaEng` (латинская «Y»).
  - **Радиус скругления:** от `0` (прямоугольная) до `14` (капсула/скругленная).
- 📋 **Универсальные шорткоды:** 
  - Используйте `[login_via_yandex]` или `[yandex_login]` без привязки к ручным ID блоков!
  - Поддержка переопределения параметров прямо в шорткоде: `[login_via_yandex view="icon" theme="dark" size="l" radius="14" icon="ya"]`.
  - Легко вставляется в Elementor, Gutenberg, виджеты, сайдбары, всплывающие окна и PHP-шаблоны темы.
- 🛒 **Автозаполнение в WooCommerce:**
  - При авторизации покупателя поля чекаута (*Имя*, *Фамилия*, *Email*, *Телефон*) автоматически подтягиваются из профиля Яндекс ID.
- ⚙️ **Гибкие варианты отображения:**
  - **Шорткод** — в любом месте сайта.
  - **Автоматический вывод** — под стандартными формами входа и регистрации WordPress (`wp-login.php`) и WooCommerce (`/my-account/`).
  - **Виджет мгновенного входа** — всплывающий блок авторизации Яндекс ID поверх страницы.
- 🛡️ **Максимальная надежность (AJAX + Nonce):**
  - Авторизация и сохранение настроек работают через `admin-ajax.php` с защитой через Nonce. Плагины безопасности (*Wordfence, Clearfy Pro, iThemes Security*) больше не блокируют работу.
  - Переключатель Redirect URI между REST API и AJAX.
- 🔄 **100% обратная совместимость:**
  - Автоматическая бесшовная миграция базы данных со старых версий (1.0.1–1.0.8) без потери существующих ключей и настроек.

---

## 📖 Содержание
1. [Создание приложения в Яндекс OAuth](#-создание-приложения-в-яндекс-oauth)
2. [Установка и активация](#-установка-и-активация)
3. [Настройка плагина](#-настройка-плагина)
4. [Использование шорткодов](#-использование-шорткодов)
5. [Какие данные пользователя сохраняются](#-какие-данные-пользователя-сохраняются)
6. [Услуги и поддержка](#-услуги-и-поддержка)
7. [Лицензия](#-лицензия)

---

## 🔑 Создание приложения в Яндекс OAuth

1. Перейдите в кабинет разработчика Яндекс: **[oauth.yandex.ru/client/new/id](https://oauth.yandex.ru/client/new/id/)**.
2. Заполните название приложения (например, *«Вход на МойСайт»*).
3. В блоке **Платформы** выберите **Веб-сервисы**.
4. В поле **Redirect URI (Callback URL)** укажите адрес вашего сайта:
   ```text
   https://вашсайт.ру/wp-admin/admin-ajax.php?action=lvyid_webhook
   ```
5. В блоке **Доступ к данным** выберите необходимые разрешения:
   - `Почта` (`login:email`)
   - `Имя, фамилия и пол` (`login:info`)
   - `Номер телефона` (`login:phone`)
   - `Дата рождения` (`login:birthday`)
   - `Портрет пользователя` (`login:avatar`)
6. Нажмите **Создать приложение**. Вы получите **ClientID** и **Client Secret**.

---

## 📦 Установка и активация

### Способ 1: Из консоли WordPress
1. Откройте панель управления WordPress: **Плагины → Добавить новый**.
2. В строке поиска введите: `Login via Yandex`.
3. Нажмите **Установить**, затем **Активировать**.

### Способ 2: Скачать ZIP-архив
1. Скачайте плагин со страницы [WordPress.org Plugins](https://wordpress.org/plugins/login-via-yandex/) или из релизов GitHub.
2. В админке WordPress перейдите в **Плагины → Добавить новый → Загрузить плагин**.
3. Выберите скачанный `.zip` архив и нажмите **Установить**.

---

## ⚙️ Настройка плагина

После активации перейдите в раздел главного меню: **Вход через Яндекс**:

1. **Данные приложения Яндекс ID:**
   - Вставьте полученные **ClientID** и **Client Secret**.
2. **Конструктор кнопки Яндекс ID:**
   - Настройте желаемый вид кнопки (`main`, `additional`, `icon`), цветовую тему (`light`, `dark`), размер (`xs`–`xxl`), тип иконки (`ya`/`yaEng`) и скругление углов (0–14 px).
3. **Режимы работы:**
   - Включите **«Автоматическое размещение»** для вывода кнопок под формами WordPress и WooCommerce.
   - Включите **«Виджет мгновенного входа»** при необходимости всплывающего окна.
   - При необходимости включите **«Альтернативную авторизацию»** (вход через редирект вместо всплывающего окна).
4. Нажмите **«Сохранить изменения»**.

---

## 📋 Использование шорткодов

Размещайте кнопку входа через Яндекс в любых местах сайта:

### Базовый шорткод
Использует глобальные настройки из Конструктора:
```text
[login_via_yandex]
```
*(Также поддерживается синоним `[yandex_login]`)*

### Шорткод с индивидуальными параметрами
Вы можете переопределить любой параметр кнопки:
```text
[login_via_yandex view="icon" theme="dark" size="l" radius="14" icon="ya"]
```

### Доступные атрибуты:
| Атрибут | Возможные значения | Описание |
| :--- | :--- | :--- |
| `view` | `main`, `additional`, `icon` | Вид кнопки (с текстом, доп., только иконка) |
| `theme` | `light`, `dark` | Цветовая тема кнопки (светлая/тёмная) |
| `size` | `xs`, `s`, `m`, `l`, `xl`, `xxl` | Размер (28px, 36px, 44px, 52px, 60px, 68px) |
| `radius` | от `0` до `14` | Радиус скругления углов в пикселях |
| `icon` | `ya`, `yaEng` | Иконка (русская «Я» или латиница «Y») |

### Вставка в PHP-код темы:
```php
<?php echo do_shortcode('[login_via_yandex]'); ?>
```

---

## 👤 Какие данные пользователя сохраняются

При первом входе плагин автоматически регистрирует пользователя и создает аккаунт в WordPress. При повторном входе — обновляет профиль и мгновенно авторизует.

### Основные поля WordPress (`wp_users`):
- `user_login` — Email пользователя
- `user_email` — Email пользователя
- `first_name` — Имя
- `last_name` — Фамилия
- `display_name` — Отображаемое имя (Имя Фамилия)

### Мета-поля пользователя (`wp_usermeta`):
- `yandex_id` — Уникальный идентификатор в Яндексе
- `yandex_phone` — Номер телефона
- `yandex_avatar` — Ссылка на аватар профиля Яндекс
- `yandex_birthday` — Дата рождения
- `yandex_gender` — Пол (`male` / `female`)
- `yandex_login` — Логин в Яндексе

### Поля оформления заказа WooCommerce:
- `billing_first_name` / `shipping_first_name`
- `billing_last_name` / `shipping_last_name`
- `billing_email`
- `billing_phone`

---

## 💼 Услуги и поддержка

Разработка и развитие плагина: IT-агентство **[Webseed.ru](https://webseed.ru)**.

- 🌐 **Заказать проект или доработку:** [Webseed.ru](https://webseed.ru?utm_source=github&utm_medium=readme&utm_campaign=login-via-yandex)
- ☕ **Поддержать проект:** [Boosty.to/webseed](https://boosty.to/webseed/donate)
- 💬 **Вопросы и предложения:** [Telegram разработчика](https://t.me/dllpl)

---

## 📄 Лицензия

Плагин распространяется бесплатно под лицензией [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
