Le plugin Pass-Home ou la redirection en fonction d’un code d’invitation

Le plugin Pass-Home ou la redirection en fonction d’un code d’invitation

Après quelques échanges de mails avec Julio Pottier de la Boite à Web, celui ci a eu l’extrême gentillesse de me venir en aide pour un problème de redirection pour lequel je me prenais la tête..

Une connaissance voulait un site web sans inscription ni login, un simple formulaire en page d’accueil qui lui permette de rediriger l’utilisateur vers sa page dédiée  à l’aide d’un code d’invitation qui lui serait remis au préalable. Ceci peut donc marcher pour tous ceux qui veulent faire un site similaire sans inscription, sans rôles sur son site.

Voici la démarche: c’est la fonction magique wp_redirect qui va ici nous aider à définir la page sur laquelle sera renvoyé l’utilisateur:

<?php
/*
Plugin Name: PassHome
Description: Un mot de passe, pour la home
Author: Julio Potier
Author URI: http://www.boiteaweb.fr
Version: 1.0
Licence: GPLv3
*/
add_action( 'template_redirect', 'check_password' );
function check_password() {
if ( isset( $_POST['password'] ) ) {
switch ( $_POST['password'] ) {
case 'prof':
wp_redirect('http://localhost/versionfinalepico/responsables/' ) ;
die();
break;
case 'eleve':
wp_redirect( home_url( '/categorie-produit/photos-de-classe-laplace/' ) );
die();
break;
// case 'etc':
// wp_redirect( home_url( '/etc/' );
// die();
// break;
}
}
}

On va utiliser notre fonction sur le hook template_redirect, très bien expliqué par Julio sur son site, hook qui agit sur le front uniquement, contrairement au hook ‘init‘ qui concerne le back office du site.

On vérifie que notre variable $_POST[‘password’] est bien définie : dans ce cas avec une condition ‘switch‘ on utilise la fonction wp_redirect pour rediriger l’utilisateur en fonction d’un mot que l’on définit ici : dans mon cas le code ‘prof‘ va rediriger vers la page dédiée aux professeurs, sinon, si le code est « élève » je redirige vers les pages catégories dédiées aux éléves.
Ici , en l’occurrence, ce sont des catégories woocommerce.

Voici le formulaire à insérer dans la page d’accueil :

 <form action="<?php echo home_url('/'); ?>" method="POST" class="wp-user-form">
<input name="password" value="" type="password" autocomplete="off" />
<input type="submit" value="valider" style="color:green"/>
</form>