Hola @musiker81, no creo que haya ningún plugin para esto, así que tendrás que crearlo tu mismo. Lo que te recomiendo que hagas es que crees un producto virtual, llámalo como quieras. Luego, tras comprobar que un usuario ha comprado ese producto, cámbiale el rol a ese usuario a Autor por ejemplo.
El gancho que te ayudará a saber si un usuario ha comprado un producto es: woocommerce_payment_complete
Ese gancho te proporciona el parámetro $order_id para utilizarlo en la función. Dentro de esa función obtén el usuario que ha realizado dicha orden y cámbiale el rol.
Espero que te sirva.
Saludos.
Hola @josearcos, muchas gracias por tu amplia respuesta. Lo he intentado de esta forma pero no hace nada:
add_action( 'woocommerce_payment_complete', 'so_payment_complete' );
function so_payment_complete( $order_id ){
$order = wc_get_order( $order_id );
$user = $order->get_user();
if( $user ){
$user = new WP_User( $user_id );
$user->add_cap( 'publish_post' );
}
}
En ese IF falta una lado de la condición y el operador 😅
Gracias Elías, es cierto, pero ahora lo he intentado de esta forma y tampoco funciona. No da fallo, pero no hace nada. He pensado que quizá puede ser porque estoy simulando una compra (aunque llego hasta el final) en vez de una compra real, ¿es posible?. Por cierto, lo estoy escribiendo en el archivo functions.php de mi tema, supongo que será ahí el sitio correcto.
add_action( 'woocommerce_payment_complete', 'so_payment_complete' );
function so_payment_complete( $order_id ){
$order = wc_get_order( $order_id );
$user = $order->get_user();
if( empty($user) ){
echo "La variable está vacía";
}else{
$user->add_cap( 'publish_posts' );
}
}
-
Esta respuesta fue modificada hace 8 años, 4 meses por
musiker81.