2017-01-17 2 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

ok, попробуйте проверить здесь, может быть, он может указать u в нужном направлении. Http://wordpress.stackexchange.com/questions/131399/share-login-data-cookies-between-multiple-installations Я не вхожу в 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

приветствуется Дион ... –

1

Здесь программно войти в два WordPress блогов сразу,

Ниже кода может выполнить ваше требование.

Это нужно два PHP-файл для включения куки для два 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 
} 
} 
?> 

Место ниже кода в secound PHP файл:

например WWW/папки/secound-блог-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 Я звоню ajax для другого входа в Wordpress во время одного выполнения. Я отправляю другой ответ как другой метод. Упование также поможет вам. –

Смежные вопросы