web-dev-qa-db-fra.com

Changer le registre inscrivez-vous action url

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

2
Minimus

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.

1
phatskat

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 );
0
socki03