web-dev-qa-db-fra.com

Créer plusieurs sous-domaines pour plusieurs sites à partir d'une base de données

Je souhaite créer plusieurs sous-domaines pour les utilisateurs.
Je sais comment créer plusieurs sous-domaines manuellement en utilisant pour créer un réseau .

Mais, j'ai tellement d'utilisateurs, je ne peux pas créer ces sous-domaines manuellement un par un.

J'ai une liste d'utilisateurs dans un fichier Excel:

id || username || password || subdomain

 1 || alex     || ****     || alex.websitewordpress.com

 2 || brad     || ****     || brad.websitewordpress.com

 3 || carol    || ****     || carol.websitewordpress.com

 4 || donald   || ****     || donald .websitewordpress.com

Comment créer automatiquement plusieurs sous-domaines en utilisant les données de mon fichier Excel?

5
hendra

Plus qu'une réponse, une étude sur le sujet.

Le problème Excel


Questions et réponses pertinentes

Le point commun à tous est: aucune procédure définitive n'a été enregistrée dans cette pile .


Code de test

  • Basé sur la première question de OneTrickPony.
  • Ne doit être exécuté que une seule fois . Je ne connais pas de meilleure méthode.
  • Je suis pas sûr si admin_init est le meilleur endroit pour exécuter ceci.
  • N'a pas été mesuré, mais ce code n'est pas rapide (3 sites dans cet exemple).
  • Il y a un terrible bug CSS dans l'administrateur après l'exécution du code. Après avoir désactivé le raccordement et rechargé la page, tout est ok et tous les sites ont été créés.

. (!?) enter image description here

/* Enable the hook, refresh the dashboard, <WAIT>, disable again */
// add_action('admin_init','wpse_54647_testing_code');

function wpse_54647_testing_code()
{
    $site = get_current_site();

    $meta = array( 
            'blogdescription'       => 'blog description'
        ,   'users_can_register'    => 1 
    );

    $sites_array = array(

            array(
                    'title'   => 'site 1'
                ,   'domain'  => 'site1'
                ,   'user'    => 'site1'
                ,   'pass'    => 'pass1'
                ,   'email'   => '[email protected]'
            )

        ,   array(
                    'title'   => 'site 2'
                ,   'domain'  => 'site2'
                ,   'user'    => 'site2'
                ,   'pass'    => 'pass2'
                ,   'email'   => '[email protected]'
            )

        ,   array(
                    'title'   => 'site 3'
                ,   'domain'  => 'site3'
                ,   'user'    => 'site3'
                ,   'pass'    => 'pass3'
                ,   'email'   => '[email protected]'
            )
    );

    for( $i = 0; $i < count($sites_array); $i++ )
    {
        $user = wp_insert_user( array (
                                    'user_login' => $sites_array[$i]['user']
                                ,   'user_pass' => $sites_array[$i]['pass'] 
                                ,   'user_email' => $sites_array[$i]['email'] 
                                ) );

        $blog_id = wpmu_create_blog(
                $sites_array[$i]['domain'] . '.' . $site->domain
            ,   '/'
            ,   $site_titles[$i]['title']
            ,   $user
            ,   $meta
            ,   $site->id
        );
    }

}
2
brasofilo