我使用以下示例创建了用于在前端登录用户的函数:https://gist.github.com/iandunn/8162246
用户登录后,函数仅在我放置登录部分代码的函数内is_user_logged_in()返回。true
如何登录全球用户?这是我的代码:
function programmatic_login( $username ) {
if ( is_user_logged_in() ) {
wp_logout();
}
add_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );
$user = wp_signon( array( 'user_login' => $username ) );
remove_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );
if ( is_a( $user, 'WP_User' ) ) {
$user_id = $user->ID;
if( $user ) {
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login );
}
if ( is_user_logged_in() ) {
return true;
}
}
return false;
}
function allow_programmatic_login( $user, $username, $password ) {
return get_user_by( 'login', $username );
}
function process_login(){
// this comes from login form
$username = $_POST["login_username"];
programmatic_login( $username );
// it returns true only here, on any other function it returns false
if(is_user_logged_in()){
echo "ok";
}else{
echo "not ok";
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例,我尝试在上一个函数之外检查用户是否已登录:
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {
$loginPage = get_page_by_title("Login");
$registerPage = get_page_by_title("Register");
if(is_user_logged_in()){
$items .= "<li><a href='" . wp_logout_url('index.php') . "' title='Logout'>Logout</a></li>";
}else{
$items .= "<li><a href='". site_url() . '/' . '?page_id=' . $loginPage->ID ."'>Login</a></li><li><a a href='". site_url() . '/' . '?page_id=' . $registerPage->ID ."'>Register</a></li>";
}
return $items;
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*ahu 11
在 codex wp_set_current_user上有一个设置当前用户并登录的示例。
$user_id = 12345;
$user = get_user_by( 'id', $user_id );
if( $user ) {
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login );
}
Run Code Online (Sandbox Code Playgroud)
小智 1
最简单的解决方法是使用 wp_login_form() 请参阅参考: http: //codex.wordpress.org/Function_Reference/wp_login_form 如果我理解正确,这应该可以处理你想要的一切。这将设置身份验证cookie并可以重定向到您想要的页面,登录在全局范围内有效
| 归档时间: |
|
| 查看次数: |
19659 次 |
| 最近记录: |