Woocommerce по умолчанию роль и роль после покупки

я нашел эта тема но это не совсем то, что я ищу.

У меня вопрос, как я могу изменить стандартную роль Woocommerce «клиент», например, «Подписчик» для новых зарегистрированных пользователей.
И затем, если пользователь проверяет (приобретает продукт), измените роль с «Подписчик» на «Клиент».

Я спрашиваю об этом, поскольку хочу показать разный контент для ролей пользователей: «зарегистрированный клиент» и «подписанный (платный) клиент».

0

Решение

Первая часть вашего вопроса — это изменение роли пользователя по умолчанию, созданной WooCommerce. Честно говоря, я бы, вероятно, оставил роль по умолчанию в качестве клиента. А затем создайте новую роль / возможность для людей, которые покупают ваш конкретный продукт.

add_filter( 'woocommerce_new_customer_data', 'so_29647785_default_role' );

function so_29647785_default_role( $data ){
$data['role'] = 'subscriber'; // the new default role
return $data;
}

Как вы видели в моем другом ответе (ну, мой повторный ответ), вы можете делать что-то, как только пользователь закончит платить, но подключившись к woocommerce_order_status_completed крюк.

Чтобы адаптировать этот код для выполнения чего-то определенного для конкретного продукта, вам нужно пройтись по пунктам заказа и сравнить их с идентификатором продукта. Замените 999 идентификатором соответствующего продукта.

add_action( 'woocommerce_order_status_completed', 'so_29647785_convert_customer_role' );

function so_29647785_convert_customer_role( $order_id ) {

$order = new WC_Order( $order_id );

if ( $order->user_id > 0 ) {

foreach ( $order->get_items() as $order_item ) {

if( 999 == $order_item[ 'product_id' ] ) {
$user = new WP_User( $order->user_id );

// Remove existing role
$user->remove_role( 'customer' );

// Add new role
$user->add_role( 'subscriber' );
}

}

}
}

Примечание: полностью не проверено, но в теории кажется правильным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]