Улучшение WooCommerce: как составить список гостевых покупок с помощью примеров кода

В 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. Независимо от того, решите ли вы хранить данные в виде метаданных заказов, назначать специальные роли пользователей или создавать отдельную таблицу базы данных, эти подходы помогут вам получить ценную информацию о вашей клиентской базе и улучшить операции электронной коммерции.