В WooCommerce гостевые покупки — это заказы, размещенные клиентами, которые не создали учетную запись или не вошли в систему во время оформления заказа. По умолчанию WooCommerce не хранит данные клиентов для гостевых покупок. Однако есть несколько методов, которые вы можете использовать для эффективного составления списка покупок гостей и управления ими. В этой статье мы рассмотрим различные подходы и примеры кода, которые помогут вам улучшить функциональность вашего магазина WooCommerce.
Метод 1: метаданные индивидуального заказа
Один из способов отслеживать покупки гостей – добавить метаданные индивидуального заказа. Этот метод предполагает сбор и хранение информации о клиенте во время процесса оформления заказа. Вот пример того, как этого можно добиться:
function save_guest_order_data( $order_id ) {
if ( ! is_user_logged_in() ) {
$guest_email = sanitize_email( $_POST['billing_email'] );
update_post_meta( $order_id, '_guest_email', $guest_email );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'save_guest_order_data' );
Чтобы получить данные о покупках гостя, вы можете использовать следующий код:
function get_guest_orders() {
$args = array(
'post_type' => 'shop_order',
'posts_per_page' => -1,
'meta_key' => '_guest_email',
'meta_value' => '',
'meta_compare' => '!=',
);
$guest_orders = get_posts( $args );
foreach ( $guest_orders as $order ) {
// Process each guest order
}
}
Метод 2: настраиваемая роль пользователя
Другой подход заключается в назначении гостевым клиентам настраиваемой роли пользователя и соответствующем хранении их информации. Этот метод позволяет вам использовать встроенные функции управления клиентами WooCommerce. Вот пример:
function assign_guest_role( $order_id ) {
if ( ! is_user_logged_in() ) {
$order = wc_get_order( $order_id );
$order->set_customer_id( get_guest_user_id() );
$order->set_customer_role( 'guest' );
$order->save();
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'assign_guest_role' );
function get_guest_user_id() {
$guest_user = get_users( array( 'role' => 'guest' ) );
if ( ! empty( $guest_user ) ) {
return $guest_user[0]->ID;
}
return 0;
}
Метод 3: настраиваемая таблица базы данных
Для более расширенного отслеживания и управления покупками гостей вы можете создать настраиваемую таблицу базы данных для хранения соответствующей информации. Вот пример того, как можно реализовать этот подход:
function create_guest_order_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'guest_orders';
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
order_id bigint(20) unsigned NOT NULL,
guest_email varchar(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY order_id (order_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'create_guest_order_table' );
Реализуя упомянутые выше методы, вы можете эффективно составлять списки гостевых покупок и управлять ими в WooCommerce. Независимо от того, решите ли вы хранить данные в виде метаданных заказов, назначать специальные роли пользователей или создавать отдельную таблицу базы данных, эти подходы помогут вам получить ценную информацию о вашей клиентской базе и улучшить операции электронной коммерции.