web-dev-qa-db-ja.com

登録フォームのアクセスURLを変更

私は2つの登録フォームを持っています、 "recruiter"ユーザーのための/wp-login.php?action=registerのデフォルトのもの、 "候補者"ユーザーのための/wp-login.php?action=register&type=candidatの他のもの

私の問題は、候補フォームではformタグがまだアクションURLとして/wp-login.php?action=registerを持っていることです、そしてそれを/wp-login.php?action=register&type=candidatにしたいのです。

Wp-login.phpファイルを更新しようとしましたが、将来Wordpressを更新すると、コードが上書きされてしまいます

私は他のトピックで 'register_url'フックを使うことを推奨してみましたが、うまくいかないようです

2
Minimus

あなたはこのようなことをすることができます:

<?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
});

GETクエリ文字列で設定されている場合、これはフォームの隠しフィールドとしてtypeパラメータを追加します。

1
phatskat

私は他の答え、site_urlフィルタを通して登録URLの修正とは異なるルートをたどりました、私はそれをテストしました、そしてそれはうまくいきます。

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