J'ai 2 formulaires d'inscription, l'un sur /wp-login.php?action=register
pour les utilisateurs "recruteur", l'autre sur /wp-login.php?action=register&type=candidat
pour les utilisateurs "candidats"
Mon problème est que sur le formulaire candidat, la balise de formulaire a toujours /wp-login.php?action=register
comme URL d'action et je veux que ce soit /wp-login.php?action=register&type=candidat
J'ai essayé de mettre à jour le fichier wp-login.php mais si je mets à jour Wordpress, mon code sera écrasé.
J'ai essayé d'autres sujets recommandant d'utiliser le crochet 'register_url' mais cela ne semble pas fonctionner
Vous pouvez faire quelque chose comme ça:
<?php
add_action( 'register_form', function() {
$get_type = filter_input( INPUT_GET, 'type', FILTER_SANITIZE_STRING );
if ( ! $get_type ) {
return;
}
?>
<input type="hidden" name="type" value="<?php echo esc_attr( $get_type ); ?>" />
<?php
});
Cela ajoutera le paramètre type
en tant que champ masqué du formulaire s'il est défini dans la chaîne de requête GET.
Je suis passé par un autre chemin que l’autre réponse, une modification de l’URL d’enregistrement via le filtre site_url, je l’ai testée et cela fonctionne.
function my_verify_registration_type( $url, $path, $scheme, $blog_id ) {
if ( $scheme == 'login_post' ) {
if ( strpos( $url, '?action=register' ) !== false && !empty( $_REQUEST['type'] ) ) {
$url = esc_url( add_query_arg( 'type', sanitize_text_field( $_REQUEST['type'] ), $url ) );
}
}
return $url;
}
add_filter( 'site_url', 'my_verify_registration_type', 10, 4 );