让我们跟着白兔走。
http://core.trac.wordpress.org/browser/tags/3.3.1/wp-login.php#L414
...无法更改,它是硬编码的。但点击后会出现以下情况:
http://core.trac.wordpress.org/browser/tags/3.3.1/wp-login.php#L481
...有一个
wp_signup_location
筛选多站点,以防您的站点
!is_multisite()
永远不会开火。如果你是多站点的,请停在这里。
add_filter( \'wp_signup_location\', \'wpse_46848_hijack_the_back\' );
function wpse_46848_hijack_the_back( $location ) {
return \'my-registration-page-is-better.php\';
}
不是多站点,是吗?
registration_redirect
是注册后发生的情况,但在显示注册页面之前调用它。我们可以玩肮脏的游戏,勾住它,然后分散到wp_redirect
使用exit()
在显示原始页面中的任何内容之前。
add_action( \'registration_redirect\', \'wpse_46848_hijack_the_back\' );
function wpse_46848_hijack_the_back( $redirect_to ) {
wp_redirect( \'my-registration-page-is-better.php\' );
exit();
}
注意,两者
add_action
和
add_filter
以同样的方式工作(
add_action
呼叫
add_filter
), 尽管通常不建议将它们混合使用,因为事情会变得混乱,但从语义上讲,您是在用带有操作的过滤器劫持,而不是过滤器(因为您没有返回任何东西)。如果您希望坚持严格的“过滤器是过滤器,操作是操作”规则,请执行以下操作:
add_filter( \'registration_redirect\', \'wpse_46848_hijack_the_back\' );
function wpse_46848_hijack_the_back( $redirect_to ) {
wp_redirect( \'my-registration-page-is-better.php\' );
return exit();
}