Je tombe sur un petit problème car j'essaie actuellement de me connecter par programme à deux blogs wordpress à la fois. J'ai une page de connexion personnalisée et les sessions des deux blogs wordpress doivent être créées. Un blog fonctionne très bien, mais comme je dois en inclure un autre wp-load.php cela ne fonctionne pas pour le second ... Mon code pour l'instant:

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

Et est appelé par: Class::blogLogin(...); Class::secondBlogLogin(...); Cela ne semble pas fonctionner car l'inclusion n'est pas seulement "bac à sable" à l'intérieur de la fonction mais également disponible à l'extérieur. Existe-t-il un moyen de supprimer une inclusion ou d'obtenir cette connexion sur les deux blogs wordpress dans un seul script?

5
Dion 17 janv. 2017 à 18:23

2 réponses

Meilleure réponse

La réponse ci-dessous est pour activer la connexion de deux mots lors d'une exécution à partir d'une seule page de connexion personnalisée.

//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
Ash Patel 24 janv. 2017 à 06:47

Ici, connectez-vous par programme à deux blogs wordpress à la fois,

Le code ci-dessous peut répondre à vos besoins.

Il faut deux fichiers php pour activer les cookies pour deux wordpress

Placez le code ci-dessous dans votre premier fichier PHP :

par exemple www / dossier / 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
}
}   
?>

Placez le code ci-dessous dans votre fichier PHP secondaire :

par exemple www / dossier / 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.
?>

Vous pouvez encoder / décoder les informations de connexion lors de l'envoi dans une nouvelle fenêtre.

J'espère que cela vous aidera !!!

1
Ash Patel 23 janv. 2017 à 06:44