Annonce

Important, migration recommandée : WordPress 2.6.3 est disponible en français.À lire avant la migration !
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.

#1 19-07-2008 21:01:03

BertrandB21
Habitué WP
Lieu: Dijon (France)
Date d'inscription: 19-07-2008
Messages: 56
Site web

Un autre Multiblog

Pour mes besoins et devant la multiplication des bogs sur mon hébergement j'ai fait une installation multiblog "différente" de ce que j'avais vu sur le net.
Chaque membre de la famille à son blog avec une adresse :
http://personne.domaine.tld/blog
le moteur wordpress est situé à l'adresse http://domaine.tld/wordpress
le contenu de chaque répertoire de blog d'utilisateur contient :
son wp-content
son wp-config
son index.php
l'idée de base est d'utiliser la variable de session pour transmettre le chemin vers le fichier de configuration
index.php :

Code:

  1. <?php
  2. session_set_cookie_params(0,'/','domaine.tld');
  3. session_start();
  4. $_SESSION['config.php']=dirname(__FILE__).'/wp-config.php';
  5. /**
  6.  * Front to the WordPress application. This file doesn't do anything, but loads
  7.  * wp-blog-header.php which does and tells WordPress to load the theme.
  8.  *
  9.  * @package WordPress
  10.  */
  11.  
  12. /**
  13.  * Tells WordPress to load the WordPress theme and output it.
  14.  *
  15.  * @var bool
  16.  */
  17. define('WP_USE_THEMES', true);
  18.  
  19. /** Loads the WordPress Environment and Template */
  20. require('pah_to_wp-blog-header.php'); /* a configurer suivant installation */
  21. ?>

le wp-config.php
rajouter après la définition de WP_LANG

Code:

  1. define ('WPLANG', 'fr_FR');
  2. define('WP_CONTENT_DIR',dirname(__FILE__).'/wp-content');
  3. define('WP_CONTENT_URL','http://personne.domaine.tld/blog/wp-content');
  4. define('WP_URL','http://domaine.tld/wordpress');
  5. define('COOKIE_DOMAIN','.domain.tld'); /* le point devant le domaine est important */
  6.  
  7. /* C'est tout, ne touchez pas au reste ! Bloguez bien ! */
  8. if ( !defined('ABSPATH') )
  9.   //define('ABSPATH', dirname(__FILE__) . '/');
  10.   define('ABSPATH', 'path_to_wordpress/'); /*modifier pour pointer sur wordpress*/

et la modifcation de wp-load.php pour prendre en compte le config.php :

Code:

  1. error_reporting(E_ALL ^ E_NOTICE ^ E_USER_NOTICE);
  2. session_start();                                                              /* ligne ajoutée */
  3. if(isset($_SESSION['config.php']))                                   /* ligne ajoutée */
  4.     require_once($_SESSION['config.php']);                      /* ligne ajoutée */
  5. elseif ( file_exists( ABSPATH . 'wp-config.php') ) {             /* ligne modifiée */
  6.  
  7.   /** The config file resides in ABSPATH */
  8.   require_once( ABSPATH . 'wp-config.php' )

Il suffit alors d'ouvrir http://personne.domaine.tld/blog pour créer la base de donnée, ne pas oublier de se conencter pour modifier l'URL du blog.

Testé avec Wordpress 2.6 chez 1and1
(modifié le 13/09 pour la propagation de l'utilisateur)

Dernière modification par BertrandB21 (13-09-2008 20:27:48)

Hors ligne

 

#2 13-10-2008 19:26:59

BertrandB21
Habitué WP
Lieu: Dijon (France)
Date d'inscription: 19-07-2008
Messages: 56
Site web

Re: Un autre Multiblog

A l'utilisation il s'est avéré que wp-cron ne marchait plus.
J'ai donc réécris le index.php de la sorte

Code:

  1. <?php
  2. session_set_cookie_params(0,'/','.domain.tld');
  3. session_start();
  4. $_SESSION['config.php']=dirname(__FILE__).'/wp-config.php';
  5. define('MYWPPATH','AbsolutePathToWordpress');
  6. chdir(MYWPPATH);
  7. if(file_exists(MYWPPATH.$_SERVER['SCRIPT_URL']) and $_SERVER['SCRIPT_URL']!='/')
  8.     include(MYWPPATH.$_SERVER['SCRIPT_URL']);
  9. else include(MYWPPATH.'/index.php');
  10. ?>

et il convient d'avoir un fichier .htaccess

Code:

  1. # BEGIN WordPress
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule . /index.php [L]
  8. </IfModule>
  9.  
  10. # END WordPress

Ce qui est le .htaccess que crée Wordpress naturellement.

Hors ligne

 

#3 18-10-2008 10:18:15

BertrandB21
Habitué WP
Lieu: Dijon (France)
Date d'inscription: 19-07-2008
Messages: 56
Site web

Re: Un autre Multiblog

Pour la résolution du problème du cron il m'a fallu aller plus loin. Le fil devenant confus je fais une recap.

L'objectif est d'avoir une seule installation de wordpress pour plusieurs blog, tous dans le même domaine mais éventuellement des sous domaine différents. Ces blogs sont hébergés sur le même serveur. Chaque blog a ses propres thèmes plugin.
par exemple le premier blog est adressé par
http://machin.domaine.tld/
le second par
http://truc.domaine.tld/blog/
et wordpress http://domaine.tld/wordpress
chaque blog doit ponter sur un répertoire contenant :
un répertoire wp-content, un .htaccess, un index.hp et bien sur le wp-config.php
le .htaccess contient simplement

Code:

  1. # BEGIN WordPress
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine On
  4. RewriteBase /
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteRule . /index.php [L]
  8. </IfModule>
  9.  
  10. # END WordPress

index.php doit juste sauvegarder le chemin du wp-config et passer la main  au wordpress installé. pour cela il utilise une constante et un variable de session.

Code:

  1. <?php
  2. session_set_cookie_params(0,'/','.domaine.tld'); //attention au point devant le domaine indispensable
  3. session_start();
  4. define('MY_WP_CONFIG',dirname(__FILE__).'/wp-config.php');
  5. $_SESSION['config.php']=MY_WP_CONFIG;
  6. define('MYWPPATH','/chemin_absolu_vers_wordpress');
  7. chdir(MYWPPATH);
  8. if(file_exists(MYWPPATH.$_SERVER['SCRIPT_URL']) and $_SERVER['SCRIPT_URL']!='/')
  9.     include(MYWPPATH.$_SERVER['SCRIPT_URL']);
  10. else include(MYWPPATH.'/index.php');
  11. ?>

le wp-config.php est à régler "as usual" avec comme rajout après la définition de WP-LANG

Code:

  1. define ('WPLANG', 'fr_FR');
  2. define('WP_CONTENT_DIR',dirname(__FILE__).'/wp-content');
  3. define('WP_CONTENT_URL','http://personne.domaine.tld/blog/wp-content');
  4. define('WP_URL','http://domaine.tld/wordpress');
  5. define('COOKIE_DOMAIN','.domain.tld'); /* le point devant le domaine est important */
  6.  
  7. /* C'est tout, ne touchez pas au reste ! Bloguez bien ! */
  8. if ( !defined('ABSPATH') )
  9.   //define('ABSPATH', dirname(__FILE__) . '/');
  10.   define('ABSPATH', 'path_to_wordpress/'); /*modifier pour pointer sur wordpress*/

dans le wordpress installé il faut récupérer les information sur le wp-config à utiliser. Il faut donc modifier wp-load.php

Code:

  1. <?php
  2. /**
  3.  * Bootstrap file for setting the ABSPATH constant
  4.  * and loading the wp-config.php file. The wp-config.php
  5.  * file will then load the wp-settings.php file, which
  6.  * will then set up the WordPress environment.
  7.  *
  8.  * If the wp-config.php file is not found then an error
  9.  * will be displayed asking the visitor to set up the
  10.  * wp-config.php file.
  11.  *
  12.  * Will also search for wp-config.php in WordPress' parent
  13.  * directory to allow the WordPress directory to remain
  14.  * untouched.
  15.  *
  16.  * @package WordPress
  17.  */
  18.  
  19. /** Define ABSPATH as this files directory */
  20. define( 'ABSPATH', dirname(__FILE__) . '/' );
  21.  
  22. error_reporting(E_ALL ^ E_NOTICE ^ E_USER_NOTICE);
  23. session_start();
  24. if(defined('MY_WP_CONFIG'))
  25.     require_once(MY_WP_CONFIG);
  26. elseif(isset($_SESSION['config.php']))
  27.     require_once($_SESSION['config.php']);
  28. elseif ( file_exists( ABSPATH . 'wp-config.php') ) {
  29.  
  30.   /** The config file resides in ABSPATH */
  31.   require_once( ABSPATH . 'wp-config.php' );
  32.  
  33. } elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) ) {
  34.  
  35.   /** The config file resides one level below ABSPATH */
  36.   require_once( dirname(ABSPATH) . '/wp-config.php' );
  37.  
  38. } else {
  39.  
  40.   // A config file doesn't exist
  41.  
  42.   // Set a path for the link to the installer
  43.   if (strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false) $path = '';
  44.   else $path = 'wp-admin/';
  45.  
  46.   // Die with an error message
  47.   require_once( ABSPATH . '/wp-includes/classes.php' );
  48.   require_once( ABSPATH . '/wp-includes/functions.php' );
  49.   require_once( ABSPATH . '/wp-includes/plugin.php' );
  50.   wp_die(sprintf(/*WP_I18N_NO_CONFIG*/'Je ne trouve pas votre fichier <code>wp-config.php</code>. J\'en ai besoin avant de lancer l\'installation.<br />Besoin d\'aide ? <a href=\'http://codex.wordpress.org/fr:Installer_WordPress\'>En voici</a>.</p><p>Vous pouvez créer un fichier <code>wp-config.php</code> à l\'aide de notre interface Web, mais &ccedil;a ne marche pas pour toutes les configurations de serveur. La méthode la plus sûre reste de créer le fichier à la main.</p><p><a href=\'%ssetup-config.php\' class=\'button\'>Créer le fichier de configuration</a>'/*/WP_I18N_NO_CONFIG*/, $path), /*WP_I18N_ERROR_TITLE*/'WordPress &raquo; Erreur'/*/WP_I18N_ERROR_TITLE*/);
  51.  
  52. }
  53.  
  54. ?>

Comme le point d'entrée pour récupérer le bon wp-config est bien l'adresse du blog et non pas celle de wordpress il est aussi nécessaire de modifier wp-includes/cron.php et remplacer get_option('siteurl') par get_option('home'). Il se peut que cette manip soit à répéter dans d'autres fichiers mais pour l'instant elle semble suffire

Code:

  1. //origignal : $cron_url = get_option( 'siteurl' ) . '/wp-cron.php';
  2.   $cron_url = get_option( 'home' ) . '/wp-cron.php';

accédez au blog pour le créer ne pas se tromper sur l'adresse de wordpress et du blog et c'est terminé ... enjoy.

ce qu'il faut retenir :
Il est assez simple de faire du multiblog avec wordpress il suffit de définir comment wp-load récupère les informations du bon wp-config. On pourrait imaginer une solution avec une seule installation de wordpress mais autant de wp-config que de blogs et une utilsation du mod rewrite.

A vous de jouer et d'inventer d'autres mode de multiblog

Hors ligne

 

#4 19-10-2008 04:24:52

taghaboy
Habitué WP
Date d'inscription: 26-10-2007
Messages: 52

Re: Un autre Multiblog

Merci pour tous ces informations.

Hors ligne

 

#5 19-10-2008 04:26:10

taghaboy
Habitué WP
Date d'inscription: 26-10-2007
Messages: 52

Re: Un autre Multiblog

Question :
Wp MU peut faire ce genre de travaille?

Hors ligne

 

#6 19-10-2008 07:54:37

BertrandB21
Habitué WP
Lieu: Dijon (France)
Date d'inscription: 19-07-2008
Messages: 56
Site web

Re: Un autre Multiblog

wpmu est la solution multibog de l'équipe wordpress, c'est celle qui propule wordpress.com.
Pour un service commercial je m'appuierais sur wp mu.

Le fil s'appelle un autre multiblog c'est bien parceque c'est une solution alternative mais plus orientée bricolage que production.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.20
© Copyright 2005-2006 WordPress France