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

Если у вас есть вопросы по статье, по плагину или просто хотите поздороваться, не стесняйтесь! Не стесняйтесь обращаться к вашему дружелюбному разработчику плагинов соседства.