Il existe une multitude de plugins d'adhésion, tous axés sur la restriction du contenu du site en fonction de l'abonnement choisi par les utilisateurs.
Toutefois, je ne souhaite que le rôle d'utilisateur de "avoir payé" à "ne pas avoir payé" à l'expiration du délai d'abonnement, leur permettant néanmoins d'afficher tout le contenu du site, mais uniquement limité aux fonctionnalités de rôle que j'ai définies précédemment. .
EDIT (pour clarification): Mes utilisateurs ont une page de profil public sur laquelle ils se présentent, ainsi que leurs services. Ils paient chaque année pour rester publics, mais s’ils ne paient pas, ils doivent être cachés du site, c.-à-d. Changer le rôle en "invisible" au lieu de "public". Aujourd'hui, je le fais manuellement en gardant les dates sur chaque utilisateur et en modifiant son rôle si nécessaire, ce qui est assez fastidieux.
Vous avez probablement sauvegardé des données d'expiration quelque part, donc configurez un travail wp_cron
à exécuter quotidiennement. Ce travail doit vérifier les dates d'expiration et modifier les rôles des utilisateurs dont les dates sont dépassées.
if ( ! wp_next_scheduled( 'alter_user_role_hook' ) ) {
wp_schedule_event( strtotime('tomorrow'), 'daily', 'alter_user_role_hook' );
}
function alter_user_role_function() {
global $wpdb;
$today = date('Y-m-d H:i:s',strtotime('today'));
$expired = $wdpb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE expired_key < {$today}");
if (!empty($expired)) {
foreach ($expired as $uid) {
wp_update_user(
array (
'ID' => $uid,
'role' => 'havent_paid'
)
);
}
}
}
add_action( 'alter_user_role_hook', 'alter_user_role_function' );
Je suppose que la date d'expiration est stockée dans la méta de l'utilisateur et je devine le slug du rôle.
Non testé mais cela devrait être proche. Je voudrais modifier les composants de temps afin qu'il fonctionne à un moment de faible trafic sur votre site.