Добавление товара в корзину по URL при помощи артикула

Если вы отключите добавление товаров в корзину при помощи AJAX, то можете заметить, что для добавления товара WooCommerce переходит по ссылке http://ваш-сайт/?add-to-cart=XX. Где XX – это ID товара. В этом уроке я покажу вам сниппет кода, который позволит делать то же самое, используя артикулы.

Также хочу порекомендовать вам свой видеокурс по WooCommerce, в котором мы учимся создавать тему для интернет-магазина с нуля на основе готовой HTML-вёрстки.

Артикул товара можно указать в метабоксе «Данные товара» во вкладке «Запасы».

Артикул товара в WooCommerce

После этого переходим по ссылке http://ваш-сайт/?add-to-cart=SKU. Где SKU – это и есть артикул.

Добавление товара в корзину по артикулу

Итак, а теперь готовый код, который будет работать следующим образом:

  1. Сначала мы попытаемся получить из базы данных ID товара, у которого SKU равен тому, который был передан в $_GET-параметре.
  2. WooCommerce очищает $_GET-параметр функцией absint(), это значит, что наш код будет работать только для артикулов, являющихся целыми неотрицательными числами.
  3. Если товара с указанным артикулом не существует, то $_GET-параметр будет обрабатываться, как ID товара.
/**
 * @snippet       Добавление товара в корзину по URL при помощи артикула
 * @author        Миша Рудрастых
 * @url           https://misha.agency/woocommerce/dobavlenie-tovara-v-korzinu-po-url-pri-pomoshhi-artikula.html
 */
add_filter( 'woocommerce_add_to_cart_product_id', 'true_get_id_by_sku', 25 );
 
function true_get_id_by_sku( $add_to_cart ) {
 
	global $wpdb;
 
	$product_id = $wpdb->get_var(
		$wpdb->prepare( "
			SELECT post_id
			FROM $wpdb->postmeta
			WHERE meta_key='_sku' AND meta_value='%s'
			LIMIT 1
		", $add_to_cart )
	);
 
	if ( $product_id ) {
		return $product_id;
	}
 
	return $add_to_cart;
 
}

Не знаете, куда вставлять код?

Подробнее про объект $wpdb и про работу с базой данных WordPress можете почитать здесь.

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.