2017-01-17 87 views
5

我陷入了一個小問題,因爲我目前正嘗試以編程方式一次登錄到兩個WordPress博客。我有一個自定義的登錄頁面,並且必須創建兩個WordPress博客的會話。一個博客工作得很好,但我必須包括另一wp-load.php它不會爲第二個......到目前爲止我的代碼工作:立即登錄兩個WordPress博客

... 
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; 
     } 
} 
... 

,並正在由名爲: Class::blogLogin(...); Class::secondBlogLogin(...); 這似乎不是作爲包括的功能不僅在功能內部「沙盒」,而且在外部可用。有沒有一種方法可以在一個腳本中的兩個wordpress博客中實現這種登錄或其他方式?

+0

不知道這是否你想達到什麼看看這裏:https://infinitewp.com/ –

+0

這似乎是隻爲adminstration登錄,我期待爲所有用戶(作者和用戶的解決方案)。一個登錄表單啓動一個主會話+博客1和博客2個會話。 – Dion

+1

好吧,試着點擊這裏也許可以點U到正確的方向http://wordpress.stackexchange.com/questions/131399/share-login-data-cookies-between-multiple-installations 我不是在THT到WP –

回答

1

下面的答案是爲了在單個自定義登錄頁面執行一次執行期間啓用兩個單詞按下登錄。

//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); 
    } 
} 
} 
?> 
+0

仍然不是一個PHP的解決方案,我也想過一個AJAX請求,但你是對的,這肯定是更舒適的工作,因爲它沒有重定向。並且可能是正確完成此操作的唯一方法。謝謝你的努力! – Dion

+0

歡迎Dion ... –

1

這裏編程方式登錄分成兩個WordPress的博客一次,

下面的代碼可能會滿足您的要求。

它需要兩個PHP文件,啓動cookies兩個WordPress的下面的代碼

放入您的第一個PHP文件

例如WWW /文件夾/第一博客 - 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 
} 
} 
?> 

將下面的代碼到您的謝勝利,PHP文件

例如WWW /文件夾/謝勝利 - 博客 - 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. 
?> 

可以編碼/解碼登錄證書,同時發送給新的窗口。

希望它能幫助你!

+0

謝謝,這確實是工作 - 並且非常相似,我做了一個解決方法,以及(我做了一個自動提交表單重定向 - 這是比在cookie中存儲未加密的密碼更安全一些)但如上所述,我實際上正在尋找一個解決方案,而沒有重定向... – Dion

+0

請檢查我的另一個答案,我一直在使用一個文件,並在第一次登錄後的wordpress,我打電話給另一個wordpress登錄一次執行ajax。我發佈另一個答案作爲不同的方法。希望它也會幫助你。 –