В первой части вашего вопроса происходит изменение роли пользователя по умолчанию, созданного 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');
}
}
}
}
Примечание: Полностью непроверенный, но кажется правильным в теории.
Только предложение ... Если вы хотите показать или скрыть контент, а не продукт, я настоятельно рекомендую вам использовать Paid Memberships Pro https://wordpress.org/plugins/paid-memberships-pro/ вместо woocommerce. –