web-dev-qa-db-ja.com

Lostpasswordページのaction = registerリンクを別のリンクにリダイレクトするにはどうすればいいですか?

私は新しいユーザーに彼らの登録フォームを完成させる特定のwordpress登録ページを持っています。しかし、私のサイトのログインセクションにある「パスワードを忘れた」リンクをクリックしてから登録をクリックすると、通常の登録フォームを経由せずにサイトに登録できます。 wp-login.php?action = registerページをsample.com/registerにリダイレクトする方法を教えてください。

前もって感謝します!

2
BentCircle

login_form_registerにフックして、wp_redirectであなたの登録ページに人々を投げてください。

<?php
add_action( 'login_form_register', 'wpse45134_catch_register' );
/**
 * Redirects visitors to `wp-login.php?action=register` to 
 * `site.com/register`
 */
function wpse45134_catch_register()
{
    wp_redirect( home_url( '/register' ) );
    exit(); // always call `exit()` after `wp_redirect`
}

ログインページのuser_can_registerオプションを乗っ取ることで、そのページの「登録」リンクを隠すこともできます。 login_form_lostpasswordlogin_form_retrievepasswordにフックし、そこからpre_option_users_can_registerにフィルタを追加します。

<?php
add_action( 'login_form_lostpassword', 'wpse45134_filter_option' );
add_action( 'login_form_retrievepassword', 'wpse45134_filter_option' );
/**
 * Simple wrapper around a call to add_filter to make sure we only
 * filter an option on the login page.
 */
function wpse45134_filter_option()
{
    // use __return_zero because pre_option_{$opt} checks
    // against `false`
    add_filter( 'pre_option_users_can_register', '__return_zero' );
}

プラグインとして

5
chrisguitarguy