web-dev-qa-db-fra.com

Connexion automatique après l'installation de wordpress

Je crée un produit dans wordpress et j'installe ici le thème personnalisé et les plugins lors de l'installation de wp.

Aucun problème jusqu'à ici. Mais l’administrateur souhaite se connecter automatiquement lors de la fin de l’installation sans demander de connexion et souhaite rediriger vers la page ce que je souhaite donner.

De l'aide?

J'ai essayé de mettre ce code après le wp_install () dans wp-admin/install.php

        $creds = array();

        $creds['user_login'] = $_POST['user_name'];

        $creds['user_password'] = $_POST['admin_password'];

        $creds['remember'] = true;          

        $user = wp_signon( $creds, false );

        if ( is_wp_error($user) )
            echo $user->get_error_message();                
        wp_redirect(home_url('products'));exit;
1
Balas

Votre problème semble être que vous vous connectez trop tôt (mis à part le problème que vous modifiez un fichier core), examinons donc wp-admin/install.php:

Pas de crochets du tout, mais à la fin de la page, lorsque tout a été correctement rendu, il y a un appel à wp_print_scripts( 'user-profile' ). Et volontiers, nous trouverons un certain nombre de crochets. Celui qui se trouve directement à l'intérieur de la fonction et porte le nom de la fonction elle-même: wp_print_scripts. Et autre à l'intérieur WP_Scripts.

Essayons donc ceci (non testé) avec un petit plugin personnalisé:

<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#129229) Auto-Login User after install */

add_action( 'wp_print_scripts', 'wpse129229LoginAfterInstall' );
function wpse129229LoginAfterInstall()
{         
    $user = wp_signon( array(
        'remember'      => true,
        'user_login'    => $_POST['user_name'],
        'user_password' => $_POST['admin_password'],
    ), false );

    if ( is_wp_error( $user ) )
        echo $user->get_error_message();                

    exit( wp_redirect( home_url( "products" ) ) );
}

Je ne sais pas si admin_password est le champ form approprié id/name. Normalement/IIRC WP utilise user_password. Deuxièmement, l'utilisateur ne sera pas connecté avec home_url( "products" ). Vous devrez utiliser admin_url() pour cela.

Dernière remarque: JAMAIS JAMAIS éditez un fichier core. Vous perdrez tous les changements lors de toute mise à niveau. S'il ne s'agissait que d'installer (et non de mettre à niveau) votre façon de le faire, elle serait même valide (si vous souhaitez conserver un WP fork), mais pas si vous souhaitez effectuer une mise à niveau.

1
kaiser

Tout d’abord, au lieu d’éditer le fichier de base, notez ce qui suit:

  1. Le wp-admin/install.php inclut le fichier wp-admin/includes/upgrade.php, tout en haut.
  2. Ce fichier upgrade.php recherche le fichier wp-content/install.php personnalisé et l’inclut le cas échéant. Votre fichier install.php personnalisé est donc inclus dans le processus d’installation. C'est important parce que
  3. La fonction wp_install() est encapsulée dans un type de vérification if ( !function_exists() ). Cela signifie que la fonction wp_install() elle-même est "connectable".

En d'autres termes, si vous définissez votre propre fonction wp_install() dans le wp-content/install.php, le vôtre sera utilisé à la place, vous permettant de personnaliser la fonction entière à votre guise, sans en modifier le cœur.

Donc, étape 1: Copiez la fonction wp_install() existante, telle quelle, dans votre fichier wp-content/install.php. Vous modifierez cette fonction au lieu d’éditer le code principal.

En ce qui concerne l'étape deux, vous souhaitez enregistrer automatiquement l'utilisateur résultant et le rediriger. Heureusement, tout ce que vous avez à faire est de définir un cookie, puis de le rediriger et de le quitter. Facilement fait. Au lieu du bit return array à la fin de la fonction, faites quelque chose de plus semblable à ceci:

wp_set_auth_cookie($user_id, true);
wp_safe_redirect(home_url('products'));
exit;

Remarque: non testé. Je n'ai pas encore essayé. Mais ça devrait marcher. Vous devrez peut-être ajouter une gestion des erreurs et autres.

0
Otto