WooCommerce B2B: как настроить оптовый магазин
Опубликовано: 2020-06-09Сектор электронной коммерции переживает невероятный рост год за годом, и конца этому не предвидится. То же самое верно и для электронной коммерции B2B, но для малого и среднего бизнеса, который хочет продавать оптом, не так много хороших вариантов платформы. На рынке есть несколько решений SaaS, но они дорогостоящие, с закрытым исходным кодом и в основном ориентированы на более крупный бизнес.
Если вы владелец бизнеса или разработчик, WooCommerce — это бесплатное, универсальное и мощное решение.
Подходит ли WooCommerce для магазинов B2B?
«Из коробки», это не так. WooCommerce — фантастическое решение для магазинов электронной коммерции, но оно не было разработано специально для оптовых продаж, поэтому с самого начала ему не хватает многих важных опций. Однако вы можете использовать мощный оптовый плагин, такой как B2BKing, чтобы расширить WooCommerce и добавить все функции B2B, которые вам могут понадобиться.
Есть два других аспекта, о которых вы должны знать, выбирая WooCommerce для своего проекта B2B:
- WooCommerce потребует регулярных обновлений плагинов, чтобы обеспечить его безопасность и правильную работу.
- В зависимости от вашего хостинга и конфигурации веб-сайта среда WordPress иногда может работать немного медленнее. Однако есть способы оптимизировать и ускорить его, например, с помощью таких плагинов, как WP Rocket (или других плагинов для кэширования и оптимизации).
Хотя это и не идеально, WooCommerce в настоящее время используется более чем в 20% мировых интернет-магазинов, и на это есть веские причины: он бесплатный, с открытым исходным кодом, мощный и безопасный. Эти же качества делают его отличным выбором для оптовых магазинов.
Чем магазин B2B отличается от обычного интернет-магазина?
Продажа бизнеса бизнесу часто является совершенно другим и более личным опытом, чем продажа напрямую потребителям. Бизнес-покупатели хорошо осведомлены, открыты для переговоров и хотят получать выгодные предложения и скидки при оптовых закупках. Каталоги цен, варианты скидок, а также способы оплаты и доставки могут широко варьироваться от клиента к клиенту, в зависимости от таких факторов, как размер бизнеса, размер заказа или существующие деловые отношения.
С точки зрения разработки веб-сайтов это означает необходимость высокой степени технической гибкости, когда речь идет о ценах, скидках, правилах доставки и заказа.
Продажа предприятиям также требует наличия таких функций, как:
- Скрытие цен для гостей
- Форма регистрации бизнеса
- Поддержка номера НДС (или другого идентификационного номера налогоплательщика)
- Налоговые льготы
- Запросы цен
- Пользовательские поля выставления счетов и оформления заказа
- Форма оптового заказа
- Возможность поддержки нескольких пользователей в учетной записи покупателя (для корпоративных структур)
Давайте продолжим и посмотрим, как некоторые из этих функций могут быть реализованы в WooCommerce. Следующие разделы будут больше ориентированы на разработчиков, и я поделюсь несколькими фрагментами кода , которые, я надеюсь, будут вам полезны, а также бесплатными плагинами , которые вы можете использовать.
1. Скрыть цены для гостевых пользователей
Начнем с легкого. Вы можете сделать это с помощью двух фильтров WooCommerce. Во-первых, давайте воспользуемся woocommerce_get_price_html , чтобы изменить отображаемую цену на «Войти для просмотра цен».
add_filter( 'woocommerce_get_price_html', 'b2bking_hide_prices_guest_users', 10, 2 );
function b2bking_hide_prices_guest_users( $price, $product ){
if ( ! is_user_logged_in() ){
return esc_html__( 'Login to view prices', 'your-plugin-text-domain' );
} else {
return $price;
}
}
Как только мы это сделаем, цены больше не будут видны и будут заменены нашим текстом. Однако этого недостаточно, поскольку пользователь по-прежнему может добавлять эти товары в корзину и видеть их цену. Решение предоставляет нам фильтр с метким названием woocommerce_is_purchasable .
add_filter( 'woocommerce_is_purchasable', 'b2bking_disable_purchasable_guest_users' );
function b2bking_disable_purchasable_guest_users( $purchasable ){
if ( ! is_user_logged_in() ){
return false;
} else {
return $purchasable;
}
}
После того, как вы добавите это, гости больше не смогут покупать продукты, а кнопка «Добавить в корзину» больше не будет доступна. Еще одна вещь, о которой стоит упомянуть, это то, что у вас могут возникнуть проблемы при использовании поисковых форм AJAX, в зависимости от того, как они настроены. Быстрый способ исправить это — также добавить приведенный выше код в ваш основной код и проверить наличие AJAX, заключив код внутрь :
if ( wp_doing_ajax() ){
// code here
}
Конечный результат:
Если вы заинтересованы в альтернативе плагина, потому что не знакомы с кодированием, B2BKing имеет эту и другие функции ограничения гостевого доступа, такие как возможность полностью скрыть веб-сайт или скрыть цены на отдельные продукты или категории.
2. Регистрация бизнеса или отдельные регистрационные формы B2B и B2C.
Здесь вам нужно добавить настраиваемые поля, такие как «Название компании», «Адрес», «Идентификатор НДС» и т. д.
Вы можете использовать этот код, чтобы добавить настраиваемое поле для названия компании:
add_action( 'woocommerce_register_form', 'b2bking_custom_registration_field' );
function b2bking_custom_registration_field(){
echo '<label>' . esc_html__( 'Company name', 'your-custom-text-domain' ) . '</label>';
echo '<input type="text" name="billing_company">';
}
Если вы хотите синхронизировать это поле с полем выставления счетов WooCommerce для названия компании при регистрации, вы можете сделать это, используя хук woocommerce_created_customer и сохранив название компании в качестве метаданных пользователя, используя те же поля, которые использует WooCommerce: billing_first_name, billing_company, billing_city, так далее:
add_action( 'woocommerce_created_customer', 'b2bking_save_custom_registration_fields' );
function b2bking_save_custom_registration_fields( $user_id ) {
$field_value = sanitize_text_field( filter_input( INPUT_POST, 'billing_company' ) );
if ( $field_value !== NULL ){
update_user_meta( $user_id, 'billing_company', $field_value );
}
}
Как создать отдельные поля формы B2B и B2C? Вы можете добавить поле «Выбрать» к регистрации, как описано выше, и использовать немного JavaScript, чтобы определить, выбрал ли пользователь «Индивидуальное» или «Компания». Показать или скрыть поля регистрации, такие как название компании, в зависимости от того, что выбирает пользователь.
Если вы хотите избежать кодирования, есть несколько бесплатных плагинов для продления регистрации, таких как https://wordpress.org/plugins/user-registration/, которые также имеют варианты для нескольких регистрационных форм, хотя для создания регистрации для B2B может потребоваться небольшая дополнительная работа с вашей стороны.
Если вы ищете решение премиум-класса, B2BKing предоставляет несколько удобных и простых в использовании шорткодов, которые вы можете добавить на любую страницу и создать регистрационную форму для бизнеса.
3. Форма оптового заказа
Бизнес-клиенты часто точно знают, что им нужно, вплоть до артикула, поэтому добавление формы оптового заказа на ваш веб-сайт позволяет быстро оформить заказ для ваших клиентов, а вы выглядите профессионально.
Как вы можете добавить один? Не существует быстрого фрагмента кода, который может это сделать, поэтому я думаю, что плагин — лучшее решение.
Есть бесплатный плагин, который я лично тестировал, он отлично выглядит и работает: https://wordpress.org/plugins/woocommerce-bulk-order-form/
B2BKing также имеет собственную реализацию, которую вы можете увидеть на следующем изображении:
4. Структура оптовых цен
Уместный вопрос здесь: как настроить разные цены для разных пользователей? Это можно сделать двумя способами: напрямую изменить цену или добавить скидку.
Чтобы добавить скидку на корзину для пользователя или категории пользователей, используйте этот код:
add_action( 'woocommerce_cart_calculate_fees', 'b2bking_cart_discount' );
function b2bking_cart_discount( $cart ){
$cart->add_fee( 'B2B Discount', -10 );
}
Код выше использует небольшой трюк, добавляя отрицательную комиссию, которая является скидкой. Приведенный выше код мало что делает, он просто добавляет 10-долларовую скидку для всех пользователей. Немного расширим код:
function b2bking_cart_discount( $cart ){
$user_id = get_current_user_id();
$user_status = get_user_meta( $user_id, 'user_status', true );
if ( $user_status === 'b2b' ){
$cart->add_fee( 'B2B Discount', -10 );
}
}
Как это? Теперь код проверяет, является ли метастатус пользователя « b2b», и дает скидку только пользователям b2b.
Как установить метастатус? Вы можете установить это при регистрации, используя хук woocommerce_created_customer , который я использовал выше во втором разделе статьи, и простую строку кода. Функция update_user_meta используется как для обновления, так и для создания пользовательской мета.
update_user_meta( $user_id, 'user_status', 'b2b' );
Что делать, если вы хотите установить сложные структуры разных цен на разные продукты для разных пользователей?
Это становится немного сложнее, но вы можете использовать те же принципы. В WooCommerce продукт — это «публикация», и вы можете установить для нее метаданные публикации. Например, вы можете добавить метаданные с именем b2b_price, чтобы иметь отдельную цену для пользователей b2b. Вот код.
update_post_meta( $post_id, 'b2b_price', 15 ); // 15 is the price for b2b users
Как вы показываете эту цену только пользователям b2b?
add_filter('woocommerce_product_get_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'b2bking_fixed_price', 99, 2 );
function b2bking_fixed_price( $price, $product ) {
// check if the user is B2B or not
$current_user_id = get_current_user_id();
$current_user_status = get_user_meta( $current_user_id, 'user_status', true );
if ( $current_user_status !== 'b2b' ){
// if user is not b2b show the normal price
return $price;
} else {
// get the current product’s price for B2B users
$current_product_id = $product->get_id();
$b2b_price = get_post_meta( $current_product_id, 'b2b_price', true );
return $b2b_price;
}
}
5. Настройка налоговых льгот
Это проще, чем вы думаете! В WooCommerce есть очень удобная функция, которая сделает это за вас и даже позаботится об отображении цены в большинстве ситуаций: set_is_vat_exempt() . Хорошее имя, правда?
Эта функция даже сделает так, что пользователи B2B увидят цены с суффиксом «без налога», а пользователи B2C увидят цены с пометкой «включая налог».
add_action( 'init', 'b2bking_tax_exemption' );
function b2bking_tax_exemption(){
// first we check if the user is tax exempt
$tax_exempt = get_user_meta( get_current_user_id(), 'is_tax_exempt', true );
if ( $tax_exempt === 'exempt' ){
$customer = WC()->customer;
$customer->set_is_vat_exempt( true );
} else {
// the next line is only necessary if the user’s exempt status changes dynamically, such as based on billing country
$customer->set_is_vat_exempt( false );
}
}
B2BKing — плагин WooCommerce для B2B и оптовой торговли
Надеюсь, что-то из того, что я рассказал выше, будет вам полезно. Оснащение WooCommerce функциями B2B — сложная задача, и я бы не стал вас винить, если бы вы решили, что покупка премиум-плагина — это лучшее использование вашего времени, чем написание кода самостоятельно. На самом деле, я не буду вас осуждать.
Имея это в виду, я поделюсь несколькими словами о B2BKing. Это проект, над которым я и моя команда работали некоторое время, с целью превратить WooCommerce в эффективное решение B2B, альтернативу дорогостоящим платформам SAAS.
Мы постоянно развиваем и поддерживаем его как долгосрочный проект, и в настоящее время он имеет более 137 функций, включая регистрацию бизнеса, налоговые льготы, правила динамического ценообразования, поддержку НДС, встроенную систему обмена сообщениями, несколько покупателей в аккаунте, предложения, специальный гибридный режим B2B&B2C и многое, многое другое.
На этой неделе мы гордимся тем, что были выбраны Envato в качестве « Избранного плагина недели » и представлены на главной странице CodeCanyon.
Мы предлагаем живую демонстрацию, которую вы можете протестировать в любое время, как бэкэнд, так и внешний интерфейс: Live Demo
Если у вас есть вопросы по статье, по плагину или просто хотите поздороваться, не стесняйтесь! Не стесняйтесь обращаться к вашему дружелюбному разработчику плагинов соседства.