[英]wordpress stop redirect to wp-login.php after incorrect/empty login
我有一个简短的代码功能,可以呈现会员登录的登录表单(与我有“我的帐户”页面的普通用户登录不同),该表单可以重定向到url或当前页面。
function affiliates_login_redirect( $atts, $content = null ) {
extract( shortcode_atts( array( 'redirect_url' => '' ), $atts ) );
$form = '';
if ( !is_user_logged_in() ) {
if ( empty( $redirect_url ) ) {
$redirect_url = get_permalink();
}
$form = wp_login_form( array( 'echo' => false, 'redirect' => $redirect_url ) );
}
return $form;
}
它工作正常,但是,如果登录表单中有无效条目或字段保留为空,则将其重定向到wp-login.php。
我已经检查了包括http://www.markomedia.com.au/wordpress-login-widget-redirect-prevention/的选项,但是我不确定如何与我的简码功能一起使用该解决方案。 我可以将其添加到functions.php中,但值得关注的是,我还启用了woocommerce,它会在my-account页面下生成一个单独的登录表单,用于正常用户登录。
有人可以帮忙吗? 提前致谢。
在get_permalink();
将您要重定向的页面的ID通过<?php echo get_page_link(40); ?>
<?php echo get_page_link(40); ?>
试试看(提供您的页面的ID)
function affiliates_login_redirect( $atts, $content = null ) {
extract( shortcode_atts( array( 'redirect_url' => '' ), $atts ) );
$form = '';
if ( !is_user_logged_in() ) {
if ( empty( $redirect_url ) ) {
$redirect_url = echo get_page_link(40);
}
$form = wp_login_form( array( 'echo' => false, 'redirect' => $redirect_url ) );
}
return $form;
}
function custom_authenticate( $user, $username, $password ) {
if ( is_wp_error( $user ) && isset( $_SERVER[ 'HTTP_REFERER' ] ) && !strpos( $_SERVER[ 'HTTP_REFERER' ], 'wp-admin' ) && !strpos( $_SERVER[ 'HTTP_REFERER' ], 'wp-login.php' ) ) {
$referrer = $_SERVER[ 'HTTP_REFERER' ];
foreach ( $user->errors as $key => $error ) {
if ( in_array( $key, array( 'empty_password', 'empty_username') ) ) {
unset( $user->errors[ $key ] );
$user->errors[ 'custom_'.$key ] = $error;
wp_redirect( $referrer . '?login=failed' );
}
}
}
return $user;
}
add_filter('authenticate','custom_authenticate', 31, 3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.