web-dev-qa-db-fra.com

Comment créer un package d'installation WordPress personnalisé?

J'ai téléchargé la dernière version de WordPress (3.5) et créé un thème personnalisé. Je prévois de le télécharger et de l'installer pour plusieurs clients. Est-il possible de personnaliser les paramètres par défaut, par exemple pour ne pas ajouter l'exemple d'article, la page et le commentaire lors de l'installation? Et définir le thème par défaut qui est activé?

J'ai consulté upgrade.php et schema.php. Il semble que l'exemple de publication, page et commentaire soit ajouté, mais je ne trouve pas où le thème par défaut a été choisi. Existe-t-il un article sur la façon de modifier ces fichiers ou des conseils sur ce qu'il faut faire?

4
user1822824

J'ai répondu à un Question similaire . Fondamentalement:

  • créer un Dropin plugin à la racine de wp-content nommé install.php

  • dans install.php, créez une nouvelle version de la fonction plug-in wp_install_defaults()

  • supprimer tous les paramètres indésirables et personnaliser à volonté, comme:

    • update_option('template', 'your-theme');

    • update_option('stylesheet', 'your-theme');

    • update_option('current_theme', 'Your Theme');

    • update_option('my_theme_options', $theme_options_array );

    • auto-activate certains plugins fournis

  • regrouper tout dans un seul paquet (fichiers WordPress et fichiers de contenu: Thème, Plugins, install.php)

  • maintenant, chaque fois que vous exécutez une installation, le Dropin sera traité et le nouveau site démarrera avec vos pré-configurations


J'ai fait quelques tests supplémentaires dans mon environnement de développement et mis à jour le Gist de l'autre réponse avec un install.php fonctionnel.
Maintenant, il contient la fonction wpse_4041_run_activate_plugin($plugin) (pour activer les plugins fournis) et un wp_new_blog_notification() vide (qui est un autre plug-in empêchant WP d'envoyer un e-mail de notification). à propos de l'installation du site).

J'ai utilisé le thème F8 Lite pour les tests. La majeure partie du code est une adaptation du script d'origine (page par défaut, Message, Commentaire, Catégorie, Blogroll). Et à la fin, mes commandes personnalisées (changer de thème, définir options de thème, activer les plugins, définir les options de plugin).

Vérifiez les commentaires sur le fichier.


Pas sûr que ce soit la meilleure méthode, mais à l'intérieur du fichier thème functions.php j'ai mis ce script qui va delete le fichier wp-content/install.php. Il ne fonctionnera qu'une fois (selon this Answer by @bainternet) et après l'installation de WP.

// If the option doesn't exist and the install script is there, delete it
if ( wpse_25643_run_once( 'my_custom_install_2013' ) )
{
    if( file_exists( WP_CONTENT_DIR.'/install.php' ) ) 
    {
        unlink( WP_CONTENT_DIR.'/install.php' );
    }
}

/**
 * Check if option exist
 *
 * @param string $key
 * @return boolean
 **/
function wpse_25643_run_once( $key )
{
    $test_case = get_option( 'run_once' );

    if ( isset( $test_case[$key] ) && $test_case[$key] )
    {
        return false;
    }
    else
    {
        $test_case[$key] = true;
        update_option( 'run_once', $test_case );
        return true;
    }
}

Questions/Réponses associées avec une autre méthode qui n'utilise pas install.php:
Script d'initialisation pour les aspects "standard" d'un site Web WordPress?

3
brasofilo

Je travaille sur un script de construction Php utilisant Phing qui installe WP ainsi que certains paramètres par défaut (thèmes/plugins et code personnalisé). Il s'agit toujours d'un travail en cours.

https://github.com/wycks/WordPhing/

Dans build.xml, vous verrez quelques options php comme celles qui sont exécutées pendant l’installation:

     //remove Hello Dolly 
      delete_plugins(array('hello.php'));

    //remove default hello world post
      wp_delete_post(1,true);

    //remove default sample page
      wp_delete_post(2,true);

    //remove default Mr.Wordpress comment
      wp_delete_comment( 1, true ) ;

ps. Je n'ai pas testé cela sur la dernière version ni sur linux.

1
Wyck

Installez votre installation comme vous le souhaitez, puis utilisez quelque chose comme http://infinitewp.com/ pour dupliquer l’installation dans vos autres emplacements pour les autres sites Web. C'est ce que nous faisons pour une installation de base pour tous nos projets.

Sinon, au lieu de créer un nouveau WordPress pour chaque site, effectuez une sauvegarde de votre installation existante de WP et importez-la sur le nouveau compte d'hébergement. Ensuite, copiez tous les fichiers en utilisant FTP, mettez à jour les paramètres de la base de données dans wp-config.php pour la nouvelle base de données et tout sera prêt. Un peu plus impliqué que InfiniteWP mais cela signifie que vous n’avez pas à payer pour le plugin.

0
cehwitham