web-dev-qa-db-fra.com

L'utilisateur connecté depuis le front-end est déconnecté automatiquement pour accéder à wp-admin

Je suis coincé dans un problème grave. Je souhaite créer un document et télécharger un document Word à partir de l'interface frontale après la connexion de l'utilisateur. Utilisateur connecté est admin. Le plugin bp-doc utilise le téléchargeur de média par défaut de WordPress pour télécharger le fichier.

Le plugin touche .../wp-admin/async-upload.php, mais cela génère une erreur An error occurred in the upload. Please try again later, après le débogage dans la console, j'ai trouvé une erreur 302 Moved Temporarily et, en réponse, un formulaire de connexion WordPress.

Après quelques recherches, j'ai trouvé une autre erreur. Lorsque je me connecte à partir du client en tant qu'administrateur et que je retourne à wp-admin, il m'a déconnecté et demande à nouveau de saisir un nom d'utilisateur et un mot de passe.

Je suis incapable de passer à travers les erreurs, n'importe qui peut m'aider, qu'est-ce qui ne va pas?

J'utilise le code suivant pour me connecter

$user_data = array();
$user_data['user_login'] = $username;
$user_data['user_password'] = $password;
$user_data['remember'] = $remember; 

$user = wp_signon( $user_data, false );

if ( is_wp_error($user) ) {

$err = "<strong>ERROR!</strong> Invalid username or password";

} 
else {

  wp_set_current_user( $user->ID);

  do_action('set_current_user');
  global $current_user;
  get_currentuserinfo();
  $redirect_to = home_url().'/members/'.$current_user->user_login.'/profile'; 
  wp_redirect($redirect_to);
  exit;
}

Live site url: https://www.group50.com/g50consultants

4
PlanetHackers

avez-vous essayé en définissant le deuxième argument de wp_signon() sur true ou vide? set false empêchera wp_signon() de définir un cookie sécurisé indispensable pour accéder à wp-admin si vous utilisez ssl. J'ai testé et $user = wp_signon( $user_data, true ); fonctionne comme prévu.

1
Kudratullah

Peut-être que votre passage de https à http après la connexion, vous pouvez essayer ce plugin https://wordpress.org/plugins/https-redirection/ pour rediriger tout votre site vers https, je l'ai utilisé une fois et j'ai également modifié mon site. URL de http: // ... à https: // .... dans les paramètres de wodpress.

Je vois que vous pouvez simplifier votre code dans ces lignes:

else {
  $redirect_to = home_url().'/members/'.$user->user_login.'/profile'; 
  wp_redirect($redirect_to);
  exit;
}

Utilisez la fonction wp_signon pour créer toutes les sessions et remplir les fonctions utilisateur actuelles.

0
Agustin Prosperi