Артём Мáлков

Разделение авторизации и регистрации по разным страницам в WooCommerce

29 сен21 комм

По умолчанию (если мне не изменяет память), при создании интернет магазина в WordPress с помощью плагина WooCommerce формы авторизации и регистрации находятся на одной странице (/my-account/).

Все бы ничего, но мне это показалось не совсем хорошим вариантом на одном из проектов, который я вел. И задача встала – разделить эти формы по разным страницам. Делается все это очень просто. И как именно, я сейчас расскажу.

1. Подключитесь к вашему сайту по FTP.

2. Из папки плагина по адресу /wp-content/plugins/woocommerce/templates/myaccount/ загрузите к себе на компьютер файл form-login.php.

3. Далее идете в папку вашей темы (это адрес /wp-content/themes/название темы/) и здесь создаете подпапку woocommerce, в которой создаете еще одну подпапку – myaccount.

Это нужно для того, чтобы мы могли кастомизировать (изменять) функционал плагина, не затрагивая его. Если что-то пойдет не так, вы можете просто удалить эти папки, и работа плагина не нарушится. Плюсом ко всему, при обновлении плагина ваши изменения не пропадут.

Если эти папки уже есть в вашей теме – ничего страшного, просто переходите к следующему пункту.

4. После того, как в теме необходимые папки созданы, перейдите к редактированию ранее скачанного файла. В него вам необходимо внедрить такую конструкцию:

<?php

	if(isset($_GET["action"]) && $_GET["action"] == "register") {

?>

	Форма регистрации

<?php

	} else {

?>

	Форма авторизации

<?php

	}

?>

Код для формы входа и регистрации вы берете из этого же файла и просто вставляете в соответствующие места.

Ссылка на страницу входа останется прежней:

/my-account/

А вот вид ссылки на регистрацию станет:

/my-account/?action=register

По завершении всех правок файл с изменениями загружаете на сервер в созданную конечную папку (myaccount). После чего формы на вашем сайте разделятся по разным страницам.

Рекомендуем к просмотру
Разрешаем добавление только одного товара в корзину в WooCommerce
Хаки
Делаем обязательные/необязательные поля в оформлении заказа в WooCommerce
Хаки
Что делать, если вместо знака рубля в WooCommerce отображается пустой квадрат?
Хаки
21
комментарий
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    9
      •  Пользователь
    23 апр в 03:32

    решил, перезалил сайт на хост)

    • 1
    1067
      •  Команда Pandoge
    22 апр в 20:24

    Макс, здравствуйте. Пришлите еще раз адрес проблемного сайта.

    • 2
    9
      •  Пользователь
    22 апр в 18:22

    тот сайт который закинул на хост перестал норм работать, т.е jquery не грузит, и на странице настроить захожу не работает.

    • 2
    9
      •  Пользователь
    22 апр в 18:20

    Артем, здравствуйте это снова я, знаю щас я не по теме но могли бы вы помочь кое счем ?

    • 1
    1067
      •  Команда Pandoge
    21 апр в 03:19

    Макс, В результате нашли ошибку. Спасибо, что написали. wink

    • 1
    9
      •  Пользователь
    21 апр в 03:14

    Эх, отлично. целый день мучался с этимlol

    • 1
    1067
      •  Команда Pandoge
    21 апр в 03:03

    Макс, была маленькая ошибка. В статье поправил - проверьте. В woocommerce не нужна папка templates

    • 1
    9
      •  Пользователь
    21 апр в 02:50

    и еще, я пока что не менял файл form-login.php ну в label прописал буквы чтобы проверить работает ли,

    если получится узнать в чем дело, пж пропишите тут подробно.

    • 1
    1067
      •  Команда Pandoge
    21 апр в 02:07

    Макс, тогда тим вивер + доступы прямо в комментарии.

    • 1
    9
      •  Пользователь
    21 апр в 02:00

    сайт на локалке, Openserver... ну могу закинуть на хост и скинуть данные, вк или любой соц сеть скиньте свой, и самому уже интересно, вроде на товары работают изменения вот именно с form-login.php что-то не так)

    • 1
    1067
      •  Команда Pandoge
    21 апр в 01:57

    Макс, пришлите FTP и адрес сайта - постараюсь посмотреть в чем дело.

    • 1
    9
      •  Пользователь
    21 апр в 01:39

    я создал дочернюю тему темы ocean wp, папка woocommerce там была так как скачал в основную тему, туда добавил папку templates а туда папку myaccount и туда файл form-login.php но почему то не срабатывает этот файл а срабатывает файл который в самом плагине woocommerce, по идее должны файлы работать те которые в теме, и тема активна. может что-то не правильно делаю в самом файле ? даже если это так он же должен выводить ошибку но не файл который в самом плагине.

    • 1
    1067
      •  Команда Pandoge
    20 апр в 22:45

    Макс, очень странно, честно говоря.

    Плагинов кэша нет? Или кэша самой темы?

    • 1
    9
      •  Пользователь
    20 апр в 19:57

    да, файл точно там и тема активна.. когда пишу в самом плагине код работает а когда пишу в файле в теме код не работает т.е срабатывает тот файл который в плагине.

    • 2
    1067
      •  Команда Pandoge
    20 апр в 19:31

    Макс, файл точно находится тут? /wp-content/themes/название темы/woocommerce/templates/myaccount

    Точно ли в рабочую тему загрузили файл?

    • 1
    9
      •  Пользователь
    20 апр в 18:21

    Сделал все как написано на верху, но изменения не вступают в силу, страница так же выдает данные из родного файла form-login.php.. как сделать чтобы новый файл отображался ?

    • 1
    1067
      •  Команда Pandoge
    25 мар в 21:19

    Николя, ну и хорошо wink

    • 2
    3
      •  Пользователь
    25 мар в 16:43

    Разобрался! Вопрос решился настройкой плагинов безопасности. На локалке их не было, поэтому и проблем не было :)

    • 1
    3
      •  Пользователь
    25 мар в 13:43

    Спасибо за помощь! Настроил. Странно только, что на локальном сервере заработал без проблем, а вот на хостинге глючит редирект после регистрации. Должен перенаправить в Мой аккаунт (консоль). Но вместо этого не находит страницу. Что это может быть, не подскажите? confuse

    • 2
    1067
      •  Команда Pandoge
    18 мар в 14:33

    Николя,

    Просто там, где выводится форма авторизации, в нужное место добавьте:

    Нет аккаунта? <a href="/my-account/?action=register">Зарегистрироваться</a>

    • 1
    3
      •  Пользователь
    18 мар в 12:54

    Спасибо, заработало без проблем! Но вопрос: как сделать ссылку "Регистрация" в форме авторизации для новых пользователей?

Подняться наверх
«Pandoge» - помощник вебмастера