Log in to two Wordpress blogs at once

I came across a small problem, as I am currently trying to programmatically log into two Wordpress blogs at once. I have a custom login page and I need to create sessions for both Wordpress blogs. One blog works fine, but since I have to include another wp-load.php , it does not work for the second ... My code:

 ... public static function blogLogin($mail, $password) { require __DIR__ . '/../blog/wp-load.php'; $wpuser = get_user_by('email', $mail); if (!$wpuser) $wpuser = get_user_by('login', $mail); if (!empty($wpuser) && !empty($wpuser->ID)) { wp_set_auth_cookie($wpuser->ID, true); return true; } else { return false; } } public static function secondBlogLogin($mail, $password) { require __DIR__ . '/../secondblog/wp-load.php'; $wpuser = get_user_by('email', $mail); if (!$wpuser) $wpuser = get_user_by('login', $mail); if (!empty($wpuser) && !empty($wpuser->ID)) { wp_set_auth_cookie($wpuser->ID, true); return true; } else { return false; } } ... 

And it is called: Class::blogLogin(...); Class::secondBlogLogin(...); Class::blogLogin(...); Class::secondBlogLogin(...); This does not seem to work, since inclusion is not only β€œisolated” inside the function, but also available externally. Is there a way to either refuse inclusion, or otherwise achieve this entry on both Wordpress blogs in one script?

+5
source share
2 answers

The following is the answer to enable a two-click login in a single run from a separate user login page.

 //Your form which contain custom login (email,password). <?php //afer submit form post login credential value into PHP code of first file. if(isset($_POST) && isset($_POST['submit'])){ require("path of first wordpress root directory \wp-load.php"); if ( is_user_logged_in() ) { $user = wp_get_current_user(); } else { $creds = array(); // Use the submited information to populate the user_login & user_password $creds['user_login'] = $_POST['username or email']; $creds['user_password'] = $_POST['password']; $creds['remember'] = true; $user = wp_signon( $creds, false ); if ( is_wp_error( $user ) ) { echo $user->get_error_message(); } else { wp_set_auth_cookie( $user->ID, true ); } ?> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript"> var url = 'url/first-blog-login.php'; var user = '<?php echo $_POST['username or email'];?>'; var password = '<?php echo $_POST['password'];?>'; $.ajax({ type: "POST", url: url, data: { 'user':user, 'password':password }, success: function(){ alert("detail passed successfully."); } }); </script> <?php } } if(isset($_POST) && !empty($_POST)){ $user = $_POST['user']; $password = $_POST['password']; require("path of secound wordpress root directory\wp-load.php"); if ( is_user_logged_in() ) { $user = wp_get_current_user(); } else { $creds= array(); // Use the submited information to populate the user_login & user_password $creds['user_login'] = $user; $creds['user_password'] = $password; $creds['remember'] = true; $user = wp_signon( $creds, false ); if ( is_wp_error( $user ) ) { echo $user->get_error_message(); } else { wp_set_auth_cookie( $user->ID, true ); } } } ?> 
+1
source

Here, programmatically enter two Wordpress blogs at once,

Below code can fulfill your requirement.

He needs two php files to enable cookies for two wordpress

Put the below code in your first PHP file :

eg. Www / folders / first-blog-login.php

 //Your form which contain custom login (email,password). <?php //afer submit form post login credential value into PHP code of first file. if(isset($_POST) && isset($_POST['submit'])){ require("path of first wordpress root directory \wp-load.php"); if ( is_user_logged_in() ) { $user = wp_get_current_user(); } else { $creds = array(); // Use the submited information to populate the user_login & user_password $creds['user_login'] = $_POST['username or email']; $creds['user_password'] = $_POST['password']; $creds['remember'] = true; $user = wp_signon( $creds, false ); if ( is_wp_error( $user ) ) { echo $user->get_error_message(); } else { wp_set_auth_cookie( $user->ID, true ); } ?> <script> var url = 'www/folder/secound-blog-login.php'; document.cookie="user=<?php echo $_POST['username'];?>"; document.cookie="password=<?php echo $_POST['password'];?>"; window.open(url, "_blank"); window.open('','_self').close() </script> <?php } } ?> 

Put the code below into your SFound file :

eg. Www / folders / secound-blog-login.php

 <?php $user = $_COOKIE['user']; $password = $_COOKIE['password']; require("path of secound wordpress root directory\wp-load.php"); if ( is_user_logged_in() ) { $user = wp_get_current_user(); } else { $creds= array(); // Use the submited information to populate the user_login & user_password $creds['user_login'] = $user; $creds['user_password'] = $password; $creds['remember'] = true; $user = wp_signon( $creds, false ); if ( is_wp_error( $user ) ) { echo $user->get_error_message(); } else { wp_set_auth_cookie( $user->ID, true ); } } //Your further code for execution. ?> 

You can encode / decode credentials when sending to a new window.

Hope this helps you.

+1
source

Source: https://habr.com/ru/post/1262941/


All Articles