Интернет магазин на WordPress: плагин Simple-Basket

Иван Никитин и партнерыНовостиWordPressИнтернет магазин на WordPress: плагин Simple-Basket

Мне, например, очень нравится WordPress (хотя я и клялся никогда об этом не писать в блоге!), однако, есть ряд сайтов, которые, как считается, делать на WP не очень правильно. Это — электронные магазины. Вообще-то существует миллион готовых решений, все же я решил написать свое. Итак, встречайте, плагин Simple-Basket, реализующий функции корзины и регистрации заказов для WordPress.

Важное замечание!

Данный плагин делался с одной единственной целью: сделать ПРОСТУЮ корзину для сайтов, к котором нет каталога товаров, а товары и услуги представлены просто записями или страницами. Если вам нужен полноценный интернет-магазин — воспользуйтесь WooCommerce, в котором есть возможности, отсутствующие в этом плагине! 

Где взять плагин Simple-Basket

Актуальная версия плагина находится здесь:

https://github.com/ivannin/simple-basket

Назначение плагина Simple-Basket

Этот плагин реализует простую корзину заказов для сайтов электронной коммерции для сайтов WordPress. Основные возможности плагина:

  • Реализация кнопки [купить] в каталоге товаров, количество и типы каталогов не ограничены (см. ниже).
  • Реализация корзины заказов.
  • Возможность учета доставки, количество планов доставки неограниченно;
  • Интеграция с кодом отслеживания Google Analytics. Поддерживается как и старая версия (ga.js), так и новая версия Universal Analytics (analytics.js).
  • Полностью настраиваемые шаблоны писем пользователю при заказе и администраторам магазина.
  • Возможность локализации плагина на любой язык.

Установка и активация плагина

Для установки плагина скачайте и скопируйте все файлы в папку вашего WordPress: /wp-content/plugins/simple-basket. Перейдите в панель управления в раздел Плагины и активируйте плагин Simple Basket

Первоначальная настройка магазина на вашем сайте

Подготовка каталога товаров

На вашем сайте должен быть каталог товаров или любое перечисление товаров в виде карточек товаров. Карточкой товара может быть запись блога, страница WordPress или запись произвольного типа (Custom Post Type). При этом название записи или страницы является названием товара. Цена товара указывается произвольным мета-полем, например, Цена

Мета-поле Цена

Важно, у всех товаров мета-поле цены должно называться одинаково.

В любом месте текста карточки товара вы можете разместить шорткод [ basket-buy-button ] (ранее было [ buy-now ]), который сформирует кнопку заказа.
(Пробелы в шорткодах надо убрать, я их поставил, чтобы сами шорккоды написать на сайте…)

 

Если вы используете отдельный шаблон для вывода карточки товара, удобнее вместо шоркода в тексте использовать вызов функции плагина в самом шаблоне следующим образом:

<?php if (function_exists(‘getSimpleBasketBuyButton’)) getSimpleBasketBuyButton() ?>

Настройка формы заказа

Для работы плагина необходимо создать страницу с формой заказа. Для создайте новую страницу WordPress с любым именем. В любом месте текста этой страницы разместите следующий шорткод:

[ basket-order-form ] (ранее это было [ order-form ])

Страница корзины

Сохраните и опубликуйте страницу.

Настройка шаблонов писем

Плагин использует 2 шаблона писем, которые высылаются при совершении заказа пользователю и администраторам сайта. Ранее в первых версиях плагина я допустил грубую ошибку с логике писем, сейчас я полностью переделал весь механизм. Теперь шаблоны писем задаются в настройках.

И в заголовке и в тексте можно использовать следующие шорткоды:

  • [order-code] – код заказа
  • [order-customer] – имя пользователя
  • [order-email] – E-mail пользователя
  • [order-phone] – телефон пользователя
  • [order-comment] – комментарий к заказу
  • [order-items] – таблица с элементами заказа

Шаблон письма

Сохраните запись со статусом Черновик (это важно!) и перейдите к свойствам записи:

Ярлык письма

Укажите ярлык записи, например, email-admin для письма администраторам и email-user для письма пользователю.

Аналогично сделайте второй шаблон.

Важно: шаблоны писем должны иметь статус Черновик.

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

Перейдите в раздел Параметры à Корзина и укажите следующие параметры:

Параметры корзины

Надпись на кнопке – при необходимости измените текст в кнопке Купить

Страница с формой заказа – укажите URL созданной вами страницы формы заказа

Каталог продуктов

Поле цена – укажите при необходимости мета-поле в карточке товара с ценой

Доставка

Если вы хотите учитывать доставку, установите галочку «Мой магазин использует оплачиваемые планы доставки». После сохранения параметров необходимо перейти в раздел настроек постоянных ссылок и там нажать кнопку [Сохранить параметры]. В результате в вашем WordPress появится новый раздел Доставка:

Типы доставки

Добавьте необходимые варианты доставки, указывая их стоимость:

Стоимость доставки

В параметрах корзины можно выбрать способ доставки по умолчанию.

Google Analytics

Если на вашем сайте используется Google Analytics, вы можете настроить интеграцию магазина с ним. Для этого в Google Analytics перейдите в настройку профиля и выберите там следующий пункт Сайт электронной торговли:

Google Analytics

После этого выберите в настройках Корзины тип интеграции

Интеграция с Google Analytics

 

Настройка закончена. Нажмите кнопку Сохранить.

Проверка работы корзины

Перейдите на любую карточку товара и нажмите на кнопку Купить. Вы должны перейти в корзину заказа, нажмите кнопку Оформить заказ. Вы должны получить письмо-подтверждение. Также заказы собираются в разделе Заказы

Заказы

Декларация разработчика

Данный плагин разрабатывается исключительно для личных целей разработчика. У разработчика нет задач улучшения мира, снижения энтропии Вселенной и накормления голодающих детей Африки. В связи с этим разработчик ничего лично вам не должен. Вы можете как угодно использовать данный код в любых своих проектах, в любых условиях и так, как вам заблагорассудится. Ссылка или упоминание добрый словом разработчика не обязательны и не требуются, но будут с благодарностью приняты. Но при этом вы должны четко понимать что данный код предоставлен «как есть», а не так «как я хочу». Разработчик не требует от вас никакой платы в явной или неявной форме ни за использование данного плагина, ни за его код и/или идеи в нем заложенные. Берите и пользуйтесь. Плодитесь и размножайтесь. Аминь!

комментариев 197

  1. Сделал всё по инструкции, к сожалению, после нажатия на кнопку из [buy-now], идет переадресация на страницу с [order-form], в GET передается ?add=15, например, но “Корзина пуста”. Подскажите, с чем это может быть связано?

      • green-coffee.zz.mu – вот тут.
        Насколько я понимаю, данные о заказе он хранит в сессиях, для того, чтобы сессия работала, в куки сохраняется id сессии, но у меня в куках только тест-кука wordpress’а. :(

        • Да, похоже, глючит плагин. Можете меня админом сделать и дать доступ по FTP к сайту (потом уберете). Я поставлю лог ошибок и попробую найти ошибку…
          Кстати, Цены прописаны в каталоге товаров? Это должно быть Custom Field и его название указывается в настройках корзины. Из-за этого может не добавлять…

          • Да, конечно могу, куда выслать?
            Цены указаны. Если в order.php сделать echo $price;, то он напишет нормальную цену, взятую из custom-field.

  2. Здравствуйте! Такой вопрос – стоимость доставки в корзине не плюсуется автоматом к основной цене?
    Не совсем логично кажется.. указывается стоимость товара, а то что еще доставка оплачивает покупатель не знает…
    Или делаю что то не так?

    • В итоговой сумме учитывается. Стоимость товаров в корзине показывается БЕЗ доставки, так как он еще доставку не выбрал, поэтому не понятно, какую сумму прибавлять.

      • В итоговой сумме где? Если только один способ доставки – Курьер – с некой стоимостью. Выбран по умолчанию. Все равно не показывается эта стоимость. Только на емайл уже приходит со стоимостью доставки. А в корзине никак(

  3. А где можно посмотреть работающий пример плагина?
    Ищу простой метод сделать аналог корзины, как на maobox.ru. Я правильно понял, что с помощью этого можно реализовать подобный функционал?

  4. Хитро у Вас на kamin-keramik.ru при покупке модальное окно представляет купленный товар. Подключил файлик simple-product-catalog.js, теперь дальнейшим действием будет добавка к сылке data?

  5. Иван Геннадьевич, маленькая неприятность. Если ставим произвольные линки , например, %category%/%postname%.html то рассылка писем не происходит при оформлении заказа. Получается лучше не фантазировать и применять стандартные варианты, да?

  6. не хочет брать цену из мета-поля в корзину

  7. Как добавить кнопку очистить корзину?

    • Вообще, сейчас далается новая версия плагина, в нем будет функция удаления или очистки корзины. Пока же можно просто установить количество в 0 и пересчитать корзину. Например, с помощью JavaScript

  8. Здравствуйте! никак не могу настроить вашу форму.
    хотя форма простая и очень доступная. что делать?

    • Напишите мне подробности в почту, я помогу. Но вообще в ближайшее время будет кардинальная переделка плагина, с подробной информацией по подключению.

      • То есть сейчас не ставить его, а лучше подождать?

  9. Добрый день! Долго искала плагин корзины для WordPress и нашла его (Simple Basket) у Вас! Жутко обрадовалась, установила по инструкции – работает, но не корректно. Возникла такая же проблема как у пользователя Александра в комментариях к Вашему плагину: “02.10.2013 at 11:13 Александр said

    Сделал всё по инструкции, к сожалению, после нажатия на кнопку из [buy-now], идет переадресация на страницу с [order-form], в GET передается ?add=15, например, но «Корзина пуста». Подскажите, с чем это может быть связано?” только идет “?add=899”
    Подскажите, пожалуйста, что можно сделать?

    • Добрый день, Юлия!
      Да, я знаю про некоторые глюки. К сожалению, был занят другим, и плагином не занимался. Но в ближайшее время займусь. Как только новая версия появится на Гитхабе — я напишу.

  10. Здравствуйте, Иван! Задумка у плагина замечательная. Идеально бы подошёл.
    Однако при настройке и запуске при попадании на страницу оформления заказа в поле “Цена” таковая не отображается, хотя на странице с товаром произвольное поле с именем “Цена” и со вписанной в поле “Значение” самой ценой подключено.
    Также на странице оформления заказа не работает поле количества заказываемого товара — не даёт прописывать число.:(

    • Инга, в настоящее время я собираюсь полностью переписать плагин, который, честно говоря, был сделан на коленке. Но не всегда есть время на работу. Как закончу — скажу.

      • Ещё повозилась: оказывается, поля введения контактных данных также не функционируют.
        Было бы здорово, если бы у Вас получилось.
        Сайт уже достаточно взрослый, на страйкинге, и интегрировать другие плагины, типа E-Commrece, WooCommerce, e-Shop и прочие, включая WP Shop не получается. При установке одних слетает форматирование, при установке других сайт становится вообще недоступным, и все требуют огромного количества редиректов, т. к. адреса в каталоге меняются. Кучу времени провела за пробами и настройками. И пока всё в пустую.
        Очень рассчитываю на Вашу помощь.

  11. Плагин установила работает корректно до момента отправки сообщений о заказе. Дело в том, что у меня на сайте стоит регистрация и сообщения админу и пользователю-заказчику приходят только если залогинен администратор, а нужно, чтобы приходили даже если на сайте никто не залогинен! Где в плагине искать причину проблемы?

  12. И вы не могли бы сказать когда выйдет новая версия плагина?

  13. Вот уже третий день роюсь в коде, не могу понять что не так (по логике вроде все должно работать) – у меня почему то не высылаются e-mailы ни админу, ни покупателю, когда пользователь не залогинен.
    Если делаю заказ с залогиненого аккаунта, то письма приходят.
    Может кто поможет решить проблемку, заранее спасибо!
    Версия wp 3.9, включен мультисайтовый режим, структура ссылок (/%category%/%postname%/).

    • Это мой косяк, причем косяк в самой идее кода. Я пытался сэкономить на странице опций и письма сделал неопубликованными заметками. Так вот, обычный пользователь, не-админ, к нем доступа в WordPress НЕ ИМЕЕТ.
      Я сейчас полностью переписываю эту часть кода. Там письма – это просто поля в настройке.

    • Могу поделиться исправленной версией, устранены некоторые ошибки, в том числе и с отправкой уведомлений о заказе, а так же добавлена корзина как в этом примере http://kamin-keramik.ru/
      Разархивируйте, и раскидайте папки файлы и код в нужные места.
      В текстовом файле есть небольшое описание.
      http://yadi.sk/d/tj8VT6F4S88H9

      • Добрый день, Максим. Воспользовался вашим дополнением к этому плагину. В принцыпе всплывающее окно открывается и товар добавляется в корзину.
        Но в хидере там где пишет ваша корзина, то он не меняет количества товаров и не добавляет цену.
        Пишет undefined
        Если бы вы могли помочь, то напишите пожалуйста.
        Вот мой скайп aurumflash7.
        Я бы заплатил.

      • Вчера часа полтора пытался прикрутить эту корзину, в итоге так и не вышло, корзина работала, виджет не отображал ничего, окно не всплывало, а просто все надписи расплылись в футере. В коде не силен.

  14. Иван Геннадьевич, здравствуйте!
    Понимаю, что у Вас жуткая рабочая нагрузка. Тем не менее, судя по комментариям, не я одна с нетерпением жду выхода переписанной версии Вашего плагина. Я хорошо помню Вашу Декларацию разработчика.:) И всё же, как дела продвигаются?

  15. тоже жду новой версии, тоже с нетерпением)

  16. Доброго вемени суток!
    Настраивала все как написано в инструкции, один товар, но кнопка купить так и не появилась, отображается в виде “шорткод [ basket-buy-button ]”.
    Подсткажите пожалуйста как доработать.
    Спасибо

  17. Столкнулась с еще одним нюансом, при выборе доставки в форме заказа выдает только один тип, хотя я указывала 2 и показывает только последний забитый, хотя в настройках карзины указан план доставки по умолчанию “нет”

  18. Доброго времени суток! Очень понравился Ваш плагин, пробую адаптировать под свои запросы. Все отлично, но… Подскажите, как локализовать под другую валюту? Сайт украинский, а “руб” в заказе – некомильфо. Спасибо!

    • Да, в следующей версии сделаю это настройку. Сейчас РУБ. берется из файлов переводов (локализации). Откройте po файл в папке lang, например, с помощью программы Poedit и отредактируйте “перевод” строки USD на гривны :)

  19. Все сделал, но в корзине он не учитывает цену товара. Пишет 0 рублей.

      • Дак есть вроде, даже два (один шаблонный, что бы в рамке перед “подробнее” выводилось), другой от плагина как раз.

  20. А все, решил проблему)
    По умолчанию там стояла “стоимость”,а не “цена”.
    А на какую почту оповещения о заказе приходить должны?

  21. А как сделать страницу, где уже оформленный заказ будет виден покупателю (где будет показываться статус оплачен или не оплачен, например) ?

    • Этой функциональности пока нет. Возможно появится позже, в следующих версиях, возможно.

  22. Отличный плагин, Иван, спасибо вам за труды.
    У меня совсем глупый вопрос: где изменить адрес почты, на которую приходят письма с сайта?

  23. Добрый день!
    Вопрос такой: после нажатия на кнопку купить открывается страница “корзины”.
    Можно ли заменить это сообщением о добавлении товара в корзину и продолжить покупки?

    • Можно! Если вы напишите JS-код, который реализует это сообщение и сделает добавление в корзину (фактически, обратившись GET-запросом к URL, который в ссылке кнопки). Сам плагин называется Simple Basket. Ключевое слово – Simple. Поэтому в планах сделать это в самой корзине у меня нет. Может быть, как нибудь пример напишу.

  24. Мне нравятся простые решения. Но почему-то Произвольные поля я вижу только в Заказах и Способах доставки, в обычных же Записях этой формы нет. Что-то не так делаю?
    З.Ы. Тестирую на локальном Open Server

    • В окне редактора записей сверху-справа найдите “Настройка экрана” и в раскрывшемся меню поставьте галочку “Произвольные поля”.

  25. Добрый день, Иван!
    1) Как сделать так, чтобы на странице отображалось Дополнительное поле? Когда создаю страницу, добавляю произвольное поле Цена со значением 100 руб, к примеру. Сохраняю, но на странице ничего не отображается.
    2) И можно ли менять вид кнопки “купить”, скажем на символ корзины?

    • 1. Откройте страницу в режиме редактирования, сверху и справа будет пункт “Настройки экрана”, откройте его и выберите “Произвольные поля”
      2. Можно. CSS в вашей теме. Сделайте кнопку блочным элементом, задайте ей размеры вашего рисунка, подложите рисунок фоном и установите прозрачный цвет текста.

  26. Спасибо за ответ.
    Дело в том что галочка Произвольные поля в настройках экрана у меня стоят.
    Я добавляю поле ЦЕНА со значением 100 гривен. сохраняю страницу. Ставлю шорт код. При просмотре страницы кнопка купить появилась, а цена нет.

    • А шорткод и не должен цены выводить! Это же плагин корзины, а не каталога товаров. Он только кнопку Купить добавляет. Цены ему нужны только для расчета корзины. Если вам нужен каталог, посмотрите у меня в репозиториях github – там есть плагин чистого каталога товаров.

  27. Спасибо большое за плагин. Пока вроде все получается!

  28. Добрый день, Иван.
    Помогите пожалуйста, я столкнулся с рядом трудностей, а именно:
    1) как переделать рубли (руб) на гривны (грн)?
    2) при выборе способа доставки, цена доставки не добавляется к общей сумме.
    3) есть ли возможность опустошить корзину?
    4) при нажатии на кнопку КУПИТ, есть ли возможность выбора, перейти к оформлению или выбирать товары еще?

      1. Да, откройте файлы локализации и поправьте строку USD на гривны :)
      2. Приведите адрес сайта. Так тяжело понять
      3. Нет, только через API
      4. Сразу переход на корзину. Если нужно остаться в каталоге – нужно писать AJAX запрос на добавление.
  29. Сайт http://prosopika.com.ua/
    В вопросе сайтостроительства я пока совсем дуб, поэтому сайт еще долек от совершенства.
    Еще вопрос, как сделать чтобы в шапке сайта появился значок корзины? И если можно, подскажите, как можно в шапку этого сайта добавить номер телефона. Спасибо!

  30. А что нужно сделать с темой, чтобы в шапке появилась Корзина и возможность добавить телефон. Тему я делал в Arteester 3.1, может какую-то опцию добавить, Вы знакомы с такой программой?

  31. Здравствуйте!
    Вот тоже присматриваюсь к “простым решениям” после того, как WP-Shop пожрал все ресурсы моего сайта и полностью повесил его… Как на счёт цифровых товаров? Есть ли возможность у вашего плагина продавать ссылки на скачку? И как подружить его с Робокассой?
    Спасибо.

    • Не совсем так. Честно говоря, я считаю, что лучше WooCommerce ничего пока не сделали. И я не ставил перед собой цель сделать его альтернативу. Просто иногда требуется очень простая корзина (именно так и переводится Simple Basket :)), например, для сайтов услуг или “сайтов одного товара”. Вот для этого я писал плагин. На его основе можно сделать полностью завершенный интернет-магазин, но придется довольно серьезно дорабатывать тему. Поэтому для обычных магазинов лучше использовать не мой плагин, а тот же WooCommerce, в котором все уже сделано.

  32. Ошибка в статье, в слове ранее буква В лишняя
    >>> Настройка формы заказа
    ……
    [ basket-order-form ] (рванее это было [ order-form ])

  33. Добрый день, Иван!
    Пожалуйста, опишите подробнее процедуру создания кнопки “купить” в виде картинки.
    Как ее реализовать и совместить с шорткодом?

    • Если вы знаете CSS, то что-то вроде этого в стилях вашей темы:
      .simple-basket-buy-now {
      display: block;
      color: transparent;
      width: …px;
      height: …px;
      background-image: url(…);
      }
      Если вы не знаете CSS – лучше и не делать.

  34. Возможно ли как то прикрутить загрузку файлов в корзине?
    Чтоб например клиент загружал файл с изображением и отправлял

  35. Замечательны
    Вордпресс ругается :)
    Notice: Функция WP_User->id вызвана с аргументом, который считается устаревшим с версии 2.1! Используйте WP_User->ID.. in …/wp-includes/functions.php on line 3318

    Notice: Функция wp_tiny_mce с версии 3.3 считается устаревшей! Используйте wp_editor(). in …/wp-includes/functions.php on line 3201

    • Недописал комментарий…
      Плагин замечательный, подойдёт многим.
      Как сделать кнопку отмены заказа?

      • Если заказ оформлен, его можно удалить только в админке. Зачем кнопка отмены заказа в форме заказа?!

        • >>>Зачем кнопка отмены заказа в форме заказа?!
          Отсутствие кнопки заказа не критично, но для удобства не помешает.

          • Не забываем, Simple-Basket :)
            Не думаю, что не имеет смысла делать отказ от существующего заказа. Это должен делать оператор ИМ, а не пользователь…

  36. Подскажите пожалуйта как вывести сумму заказа. Хочу сделать статус мини-корзины, чтобы возле надписи “Корзина” в углу сайта выводило сумму заказанного. Но с программированием знаком не глубоко, порылся в исходниках, нашел функцию getTotal() в SimpleBasketOrder, но как ее вызвать на странице сайта не знаю. Подскажите пожалуйста.

    • Я думаю, что-то типа такого в шаблоне
      <?php
      $basket = SimpleBasketOrder::create();
      echo $basket->getTotal();
      ?>

      • Иван, спасибо большое, все работает. И отдельное спасибо за такой оперативный ответ.

  37. Иван, подскажите пожалуйста как реализовать возможность остаться в каталоге после нажатия кнопки “Купить”, но при этом что-бы корзина пополнилась выбранным товаром?

    • Только модификацией темы и AJAX-запросом по кнопке. Например, поставьте на кнопку (ссылку Добавить в корзину) обработчик onclick и запретите в нем выполнение дефолтового действия. В этом обработчике вызовите через AJAX методом GET тот URL, который в ссылке. Собственно, всё. Пяток строк на jQuery.

      • Спасибо за быстрый ответ!
        Что-то вроде такого?

        function SendGet() {
        $$a({
        type:'get',
        url:'?page_id=304',
        data:{'add':'ххх'},
        }
        });
        }

        там где ххх, как получить id товара?

        И еще вопрос по реализации на самой странице в режиме реального времени корзины с числом товаров и суммой, каким образом можно реализовать подобное?

        • Ну типа такого… А ссылку c ID товара получите из href самой ссылки – это же в обработчике onclick, то есть, есть this – а элемент а

          $('...').click(function(event){
          var ajaxURL = this.href;
          ...
          });

          • С этим получилось, а как все-таки сделать корзину на самой странице, которая будет показывать количество товаров в корзине?

  38. Огромное спасибо за Ваши ответы!
    А есть возможность сделать это в режиме реального времени?
    Вышеприведенный код показывает сумму только на момент открытия страницы

    • Думаю так:
      сделайте пустой шаблон страницы без хедера и футера и страницу на основе этого шаблона. В шаблоне просто выведите сумму в корзине, как показано выше. После добавления аяксом в корзину еще одним запросом обратитесь к этой странице и прочитайте сумму. Это будет быстрее всего.
      Вообще-то AJAX API есть в корзине (см. описание на github), но он использует шататный AJAX интерфейс WP, а он подтормаживает. причем хорошо так подтормаживает.

  39. Добрый день, Иван. Плагин класный мне подходит по всему функионалу, правда в поле произвольная запись прописываю цену, а оно мне всеравно 0 рублей в корзину ставит, уже по разному пробывал. Может подскажете в чем может быть проблема?

  40. Здравствуйте! Я, к сожалению, не разбираюсь в кодах, плагинах и сайтостроениии. Поэтому глупый вопрос: какой именно файл скачивать из указанного вами места, чтобы установить плагин, или надо скачивать вообще все, что там есть? Мне нужна именно простая корзина для пары-другой товаров. Woocommerce и прочие – слишком огромны и слишком сложны – ради пяти наименований не стоят возни и ресурсов.

    • На сайте github.com (https://github.com/ivannin/simple-basket) найдите кнопки [Download ZIP], скачайте архив, разархивируйте его, переименуйте папку (которая была в архиве) в simple-basket и закачайте эту папку целиком на сайт в /wp-content/pluging. Перейдите в раздел плагины и активируйте плагин. Далее по инструкции.

      • Что-то сделала неправильно? Кнопка Купить есть, Корзина есть, а писем админу и заказчику почему-то нет. Создала два черновика, как у Вас на фотографии, сохранила. Проверила. Письма не пришли.

  41. Добрый день, Иван!
    Спасибо за такой хороший и простой плагин. У меня всё получилось с первого раза, хотя не очень дружу со всеми кодами тегами и пр. Корзина есть, кнопка заказа есть, письма приходят. Единственное, хотелось бы чтобы была мини корзина в верхнем углу сайта, и была бы возможность выбора товара (на одной странице один товар с разными размерами, соответственно ценами) чтоб покупатель мог выбрать. Я пробовала в мета-поле делать два вида цен,и ставила два шорткода, но в заказе всё равно указывается первая цена. Буду благодарна за обновления с моими пожеланиями))

    • Добрый день! Да, такое часто просят. Но в ближайшее время у меня нет планов это реализовать. Может быть вернусь к разработке ближе к лету. Может быть, Вам проще на WooCommerce перейти?

      • Спасибо за ответ! Для WooCommerce я пока ещё “зелёная”, возможно позже)))

  42. Привет! Интересует возможность реализации добавления товаров в корзину посредством заполнения Ajax формы покупки,как на этом сайте: http://veschichka.com/help/how-to-order/ .Возможно ли такое реализовать на wordpress ? Если да, то каким образом?

  43. Иван, подскажите пожалуйста. Так и не появилась кнопка купить. Использую не шоткод, а ссылку на функцию. Не понял про мета-поля. Скорее всего из-за этого кнопка и не появилась. Можете подробнее объяснить как такие мета-поля добавляются в ВП?

    • Виталий, если кнопка не появилась, значит функция не объявлена. То есть, плагин не активирован. Попробуйте проверить активацию или шорт-код

      • Активировал его, шорткод вставляется просто текстом, поэтому я использовал ссылку.

        • Не, что-то у вас не работает. Раз ни шорткод не подхватился ни функция…
          Мы сейчас просто заняты, поэтому не обещаю помочь разобраться…

          • Я разобрался, осталась проблема только с мета-полями. Не могу понять, что нужно сделать и в какой последовательности, что бы плагин начал забирать цену.

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

    • Думаю, если нужны доп.свойства товаров – лучше перейти на WooCommerce. Он не такой сложный и страшный, как кажется, но это все в нем есть.

  45. еще хотелось бы добавить функцию удаления позиций из корзины
    как бы это реализовать?

    • Для удаления товара из корзины, достаточно установить ему количество 0 и пересчитать корзину

  46. Иван, большое спасибо за плагин!
    Вопрос – а можно как-то в корзине выводить не только его id, но и описание (т.е. всё содержимое топика с товаром)?

    • Плагин выводит названия товаров, но другие свойства товаров он не берет. В нем нет каталога товаров.

      • Иван, я понимаю что в плагине нет каталога, так как вместо каталога используются обычные записи вп. Другое дело что при заказе выводится название записи по её id, а хотелось бы выводить её содержание по тому же id в корзине.

        • В общем добавил в SimpleBasketOrder.php в часть вывода корзины $my_post = get_post($id) и в $output .= ”.$my_post->post_content.”, в итоге получил что хотел =)
          и потом чуть подшаманил с заменой строки чтобы [basket-buy-button] не светилось в содержимом.
          Еще раз спасибо за плагин!

  47. я уже подвязал свой сайт на Ваш замечательный плагин, и за что огромное спасибо!!! Мне только нужно добавить одно поле в форму заказа, где покупатель просто сам напишет нужный ему цвет товара. Добавить поле наверное проще, чем переделывать все под WooCommerce.
    Хотя подскажите куда лезть или какую строку дописать?
    Но все равно спасибо за простой и удобный плагин!!!

    • Николай, дело в том, что у Simple-basket НЕТ каталога. Он использует любые типы записей или постов в качестве каталога товаров. Понятно, плагин понятия не имеет откуда читать дополнительные данные. Поле “Цена” указывается в настройках, а вот другие поля… Вам нужен цвет, другому — размер, третьему — сорт и т.п. Я же не могу ВСЕ ЭТИ ПОЛЯ предусмотреть в настройках! Поэтому лучше всего вам использовать плагин с каталогом, и здесь безусловный лидер — WooCommerce. Все что вам нужно он делает.

      • мне просто нужно добавить напротив каждого поля в корзине пустое окошко как внизу корзины “примечание…” но область “поле” меньшего размера, как под имя в форме, и желательно что бы получилось в самой таблице с каждым вариантом товара, либо рядом напортив каждого пункта…

      • хотя бы просто подскажите какой код прописать и в каком файле, что бы добавить пустое поле в форму заказа? что бы пользователь, так же как в форму комментов мог вписать слово… мне просто нужно что бы в колонке заказов с каждым вариантом добавилось пустое поле для комментария…

        • Там, к сожалению, одним файлом не обойтись.. Там много что менять придется. Я как раз про это и говорю: нет смысла (да и времени, мы из-за этого и прекратили поддержку плагина) под одну единственную задачу, это требует его полной переработки.

  48. Здравствуйте, Иван! Отличный плагин, спасибо! Я его уже почти настроил под свои задачи, но не могли бы вы немного помочь. Как реализовать эти две вещи:

    1) Чтобы при клике на кнопку, товар добавлялся в корзину, а пользователь оставался на той же странице. Об этом уже спрашивали несколько человек, может поделитесь примерчиком? Думаю, многим будет полезно.

    2) Чтобы корзина сама пересчитывалась перед отправкой заказа.

    • Думаю, JavaScript!
      1. Есть такая штука Ajax forms или просто аяксом с помощью GET отправить даныне по URL кнопки Купить
      2. Аналогично. Перед отправкой формы выполнить передачу формы “пересчитать”. Вот здесь Ajax Forms просто очень поможет.

      • 1. Но в плагине же есть какой-то ajax-api, и функция соответствующая:
        SimpleBasket.add = function (id, callback)
        {
        if (!id) return;
        jQuery.ajax({
        url: SimpleBasket.ajaxurl,
        type: 'POST',
        data: ({
        action: 'add',
        nonce: SimpleBasket.nonce,
        'id': id
        }),
        success: function (data)
        {
        console.log(data);
        if (callback) callback(data);
        }
        });
        }

        Или это не то?

        • Как я понял, должно быть что-то такое:

          Купить

          $('.simple-basket-buy-now').click(function(){
          jQuery.ajax({
          url: "http://site.ru/cart&add="+this.getAttribute('data-id'),
          type: 'GET',
          success: function ()
          {
          alert('done');
          }
          });

          })

          Но так не работает :( Подскажете где ошибка?

  49. Здравствуйте, Иван.
    Ваш плагин действительно хорошо и подкупает своей простотой и удобством использования. Очень хотел бы использовать его в своём интернет-магазинчике. Но, дело в том, что у меня в магазине заголовки публикаций с товарами не соответствуют непосредственно названиям моделей товаров. Это сделано специально из соображений СЕО. В связи с этим есть вопрос: как в вашем плагине сделать так, чтобы в корзину название товара бралось не из заголовка публикации, а, например, из такого же произвольного поля, как и цена товара? Или ещё откуда-нибудь, но не из заголовка.

    • Думаю, никак. Плагин берет название записи WP в качестве названия товара. А что мешает использовать SEO Yoast и перезаписать им TITLE?

      • TITLE у меня перезаписывается СЕО-плагином. А заголовок публикации идёт в теге H1. И здесь у меня использованы ключевики, по которым люди ищуть этот товар в Интернете. Поэтому заголовки зачастую не содержат прямых названий моделей товаров. Если я убираю из заголовков ключевики и ставлю туда просто названия моделей, то это отрицательно сказывается на поисковой выдаче публикаций с товаром.

        • Согласитесь, нестандартный заголовок на странице, то есть, не название записи – это изменения Вашей темы. Может быть Вам просто в посте себе сделать новое поле — мой заголовок и его выводить в шаблонах sing;e.php и index.php, а стандартный заголовок использовать как название товара?

          • Ну, в принципе, тоже вариант. Хорошо, спасибо, я над этим подумаю.

          • В ходе настройки плагина обнаружил, что в публикации, в которую помещаю вывод кнопки заказа “basket-buy-button”, появляется только надпись “Купить”, а никакой кнопки нет. Надпись эта работает, то есть по ней происходит переход на страницу корзины и заказ в корзине есть. Но, всё-таки, хотелось бы иметь действительно кнопку на странице с товаром, а не просто слово “Купить”, такое же серое, как и весь текст на странице.
            Разве так и должно быть?

          • Плагин не вмешивается в оформление ваших страниц. Кнопка “купить” – это просто ссылка. Добавьте пару строк CSS в свой style.css и сделайте из нее визуально такую кнопку, какая Вам больше нравится.

        • Большое спасибо! Всё сделал. Теперь кнопка красивая!
          А то я CSS в плагине ковырял и не мог понять, почему ничего не получается. :))

  50. а как же сделать так чтобы при нажатии кнопки “купить” товар просто добавлялся в корзину? и была возможность прдолжить покупки…

  51. Установил версию которую выкладывал Максим, поверх обновил вашей последней версией, все заработало, только появилась проблема с пересчетом корзины… когда пересчитываю, таблица и форма заказа пропадают, пока не нажемешь “F5” , когда жмешь все появляеться уже с персчитаной корзиной… как исправить это?

  52. а как же сделать так чтобы при нажатии кнопки «купить» товар просто добавлялся в корзину? и была возможность прдолжить покупки… Тож интересует))

    • Еще раз: плагин не вмешивается в отображение страниц вашего сайта. Он просто добавляет ссылку [Купить], которая приводит к добавлению в корзину. Если Вы хотите изменить логику этого – без проблем! Пишите свой аяксовый код отправки данных по этой ссылке и не уходите со страницы. Тут же можно и диалоговое окошко вывести. jQuery UI поможет.

    • Добавить в футер:

      var cart = {};
      $(document).ready(function(){
      cart.add = function(btn) {
      var $btn = $(btn);
      var productId = $btn.data('id');
      //Заменить "/cart" на свою страницу с корзиной
      $.get('/cart?add=' + productId, function() {
      //Действие после успешного добавления товара
      });

      return false;

      };
      });

      Изменить 42 строку в файле shortcodes.php на:


      $output = '' . $caption .'';

      *Тэги написаны русскими буквами, чтоб тут не преобразовывались в ссылку. Необходимо заменить на английские.

      • Спасибо за решение. Но только по идее плагин не должен вмешиваться в тему и что-либо делать с футером и хедером. Поэтому что мешает Вам в самой теме сделать следующее:
        1. Добавить код в футер
        2. Навесить на кнопку обработчик – $(‘a.simple-basket-buy-now’).click(function(e){…; e.preventDefault();})

    • Не знаю как тут нормально вставить код, поэтому добавил решение в GitHub

  53. Доброго времени суток! Подскажите пожалуйста, как правильно обновить ваш плагин.

      • Иван, здравствуйте! Хотел у вас узнать по поводу cookie, получается в cookie записывается строка ввида |_|_|_|_|_|_| , после чего мы ее извлекаем как массив, а какая последовательность записи? Можете мне расписать какие данные записываются в данный массив (по порядку)? Буду вам очень признателен!

        • В нашем плагине пишется куки? Разве? По-моему, я этого не делал…
          Если же вы хотите самостоятельно сделать хранение корзины в куки, я бы так делать не стал, а хранил бы корзину в БД, в куки же записывал бы только некий идентификатор сессии, причем случайно сгенерированный.

  54. Здравствуйте, Иван Никитин. Установил ваш плагин, чуть поколдовал – и все вроде заработало. Все считает, письма отправляет, кнопку прикрутил. Даже в тему кнопку таким образом сделал, что когда цена убирается, то и кнопка автоматом пропадает. Но не хватает буквально 3 вещей:

    1 – банальный виджет для сайдбара со значением суммы. Хотя бы кусок кода который будет показывать сумму, которая на данный момент в корзине. Дальше кое как допилю сам…

    2 – Хотелось бы все-таки чтоб при нажатии на кнопку не закидывало на страницу корзины. Выше читал, что нужно серьезно допиливать, но видать кто-то все-же реализовал эту возможность, люди, поделитесь решением, лучше сразу архивом с плагином, так будет проще для таких простых чайников как я. )))

    3 – очень хотелось бы реализовать функцию минимального заказа, если к примеру общая сумма заказа менее Х – то выводилась надпись, что сумма минимального заказа должна быть не менее Х и тд. Ну или хотя бы чтоб заказать нельзя было пока сумма не превысит Х.

    Ну а в общем хочу сказать спасибо вам Иван Никитин, что не поленились и дали жизнь такому плагину как simple basket. Дай вам Бог времени на то, чтобы довести все до логического конца и положить так сказать этот плагин на полку в завершенном виде.

    • Иван, я понимаю Ваши желания, но, к сожалению, в планах нет реализации. Simple Basket был частью одного из наших проектов несколько лет назад. Нам необходимо было сделать простой магазин услуг без выраженного каталога товаров. Для этого я и написал этот плагин. В последствии мы поняли ущербность такого подхода и остановили дальнейшую разработку. Наш плагин крайне прост, но при реальной работе зачастую требуются все новые и новые функции. Пытаться их сделать и увеличивать его функциональность – это делать то, что уже давно сделано. Например, в том же WooCommerce, который решает всё. Потому мой Вам совет: если Вам уже потребовались новые функции, переходите на WooCommerce! (https://wordpress.org/plugins/woocommerce/)

  55. Ну на нет и суда нет. ) Понимаете, Иван, мне вполне хватает вашего плагина, но вот чуть еще бы больше и вообще было бы замечательно.

    Если вас не затруднит, можете мне дать почту Макса, который допилил вашу корзину.

    Вот его пост немного выше:
    [ Могу поделиться исправленной версией, устранены некоторые ошибки, в том числе и с отправкой уведомлений о заказе, а так же добавлена корзина как в этом примере http://kamin-keramik.ru/
    Разархивируйте, и раскидайте папки файлы и код в нужные места.
    В текстовом файле есть небольшое описание.
    http://yadi.sk/d/tj8VT6F4S88H9 ]

    Буду премного благодарен. Моя почта k_22@tut.by

    Пост можете и не публиковать.

    • Если вы говорите о Максиме Ульянове (web.ulyanov@gmail.com), но навряд ли вам поможет… Скорее лучше обратиться вот сюда https://github.com/yubuylov – Юрий форкнул нашу разработку, и судя по всему ее допиливает.

  56. Подскажите, а как выводить корзину на всех страницах сайта? Сейчас корзина со списком товаров выводится на странице sait.ru/cart/. Я так понял что корзина выводится за счет файла order-form.php и order.php, пытался прописывать новые функции, но ничего не получилось!

    /**
    * Конструктор класса
    */
    public function __construct()
    {
    $this->basket = SimpleBasketOrder::create();
    $this->basketURL = get_option(‘simple_basket_order_page’); // МОЖЕТ ЭТА СТРОЧКА МЕШАЕТ ВЫВОДУ КОРЗИНЫ НА ВСЕХ СТРАНИЦАХ?
    $this->deliveryType = 0;
    $this->orderId = ”;
    }

    И как хранятся товары добавленные в корзину, в какой таблице БД?
    Буду вам очень благодарен, если вы мне поможете!)

    • Нет. Эта строка не может мешать выводу.
      Корзина (по-моему) хранится в сессии PHP, а не в БД, проще посмотреть в сериализованные объекты в сессии

  57. Мне тоже интересно в какую таблицу в БД записывается корзина, в массиве указываются только id или вся информация о товаре (id, цена, кол-во, категория)!

    • В этой реализации корзина, по-моему (я не помню, этот код я писал два-три года назад) хранится как сериализованный объект в сессии PHP, а не в БД. Зачем БД раздувать брошенными корзинами?

      • Я хотел узнать у вас как вывести аякс корзину на страницах сайта, чтобы при добавлении товара, корзина автоматически обновлялась! Нашел в js файле simple-basket.js код который якобы выводит содержимое корзины, а как вывести его на сайте?
        ==========================
        // Метод выводит содержимое корзины
        SimpleBasket.getData = function (callback)
        {
        jQuery.ajax({
        url: SimpleBasket.ajaxurl,
        type: ‘POST’,
        data: ({
        action: ‘getData’,
        nonce: SimpleBasket.nonce
        }),
        success: function (data)
        {
        if (callback) callback(data);
        }
        });
        }
        ======================

      • А не пробовали вызвать и посмотреть, что в консоли выведется: SimpleBasket.getData(fucntion(data){ console.log(data); });

        • Пробовал, там получается JSON объект items вложенный, а как извлечь оттуда информацию я не знаю! Он в логах показывает всю информацию (имя, телефон, email и т.д)

  58. Доброго времени суток всем. Иван, как видите, я от вашего решения не отказался. Пробовал вукомерс, но он работает со своими товарами, а у меня уже создана куча записей. вп-шоп дико тормозит сайт. С вашей корзиной все очень хорошо работает и не тормозит.

    Осталось только сделать так, чтобы при добавлении товара в корзину можно было оставаться на той же странице. Пробовал сделать сам, но в коде я не силен. Может кто поможет решить эту проблему? Могу дать доступ в админку.
    скайп – Bludniykotuk или kesha-by@tut.by

    • Попробуйте обратиться вот к нему: https://github.com/yubuylov
      Он форкал этот проект, и видимо, дорабатывал его

  59. Иван, а как привязать шорткод [basket-buy-button] к кнопке?

    • И почему при нажатии “Заказать” или “Купить” показывается пустая страница сайта и потом надо нажать на страницу “Корзина”, чтобы увидеть что упало в корзину?

      • Скорее всего, кэш на сервере/в браузере.

      • Адрес сайта приведите…

    • А зачем? Он, собственно ссылку (кнопку) и выводит.

      • Здравствуйте!

        Такая же проблема при нажатии «Купить», или “Пересчитать” показывается пустая страница, и нужно заново зайти на эту страницу, чтобы увидеть форму заказа.

        Помогите пожалуйста!

        • Вероятная причина – использование плагинов кэширования. Типа WP Super Cache или W3 Total Cache. Simple Basket под них НЕ РАССЧИТАН! Используете WooCommerce.

  60. Здравствуйте.
    Возникло несколько вопросов:
    1. При нажатии на ПЕРЕСЧИТАТЬ или ОФОРМИТЬ ЗАКАЗ выбрасывает на 404 страницу
    2. Как сменить валюту
    3. Как в полях ВАШИ ДАННЫЕ можно сдвинуть заполняемые поля
    Спасибо.

    • 1. Какой URL в адресной строке в этот момент?
      2. В файле локализации (переводы)
      3. Переверстать шаблон. Плагин НИКАК за отображение не отвечает

      Важное замечание!
      Данный плагин нами НЕ ПОДДЕРЖИВАЕТСЯ и РАЗВИВАТЬСЯ В ДАЛЬНЕЙШЕМ НЕ БУДЕТ! Если вам нужен полноценный интернет-магазин — воспользуйтесь WooCommerce, в котором есть возможности, отсутствующие в этом плагине!

      • 1. С кнопками разобрался, спасибо за наводку!!!
        2. Файл локализации – simple_basket-ru_RU.po ???
        Делаю в нем изменения – никакого эффекта.

        WooCommerce не нужен, ваш отлично подходит!!!!

        • Со всем разобрался. Спасибо за отличный плагин!

Комментарии закрыты.