web-dev-qa-db-fra.com

Comment exécuter deux blogs Wordpress avec des thèmes différents, avec une base de données unique et le même contenu

Comment pouvez-vous exécuter deux blogs Wordpress avec des thèmes différents en utilisant une base de données où le contenu reste le même dans les deux sites? La question que je reçois est à la cartographie de domaine dans les deux blogs.

3
Aryan

Je vais essayer d'expliquer comment cela peut être fait, mais je ne suis pas sûr que cela fonctionne:

  1. Installez le deuxième site Web avec une seule base de données (2 copies).
  2. Créez une nouvelle table dans votre base de données. Appelez-le wp_options2 et copiez le tout de wp_options dans la nouvelle table
  3. lors de la deuxième installation dans wp-config.php, avant if ( !defined('ABSPATH') ) add

    define( 'M7_OPTIONS_TABLE', 'wp_options2' );
    
  4. dans la deuxième installation, allez à wp-includes/wp-db.php à la ligne 951 et ajoutez ce code:

    if ( isset( $tables['options'] ) && defined( 'M7_OPTIONS_TABLE' ) )
        $tables['options'] = M7_OPTIONS_TABLE;
    

    (Ce code doit être ajouté à la fonction public function tables, avant if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) ))

Vous devriez maintenant pouvoir changer le thème, plugins atc. pour le deuxième thème, mais tous les articles, taxonomies, etc. seront doublés dans les deux sites Web (ce qui est mauvais pour le référencement).

Si vous rencontrez des problèmes avec des liens lors de votre deuxième installation, ajoutez:

define('WP_HOME','http://seccond_website.com');
define('WP_SITEURL','http://seccond_website.com');

dans votre fichier wp-config.php .....

mais cela ne résoudrait pas le problème si vous deviez créer une publication sur le premier site Web; sur le deuxième site Web, le lien serait dirigé vers le premier site Web ...

Je posterai toujours cette réponse, même si elle n’est pas correcte (à cause du problème décrit ci-dessus).

En tant que solution, vous pouvez créer 2 installations distinctes avec $table_prefix différent et ajouter une action à chaque déplacement (save_post, save_taxonomies, save_postmeta, etc.) pour enregistrer de 1 db à l'autre, en modifiant les liens nécessaires.

Vous pouvez également créer un travail cron lors de la deuxième installation pour analyser chaque message, page, etc. de la 1ère base de données au 2e (puisque vous avez accès à ces deux éléments, ce serait facile).

Vous ne savez pas si cela suffira mais ces deux plugins devraient vous donner la plupart de ce que vous voulez N'importe quel nom d'hôte - modifiez les URL de contenu pour refléter le domaine dans lequel le contenu a été demandé Thème du domaine - changez les en fonction du nom de domaine.

Je n'en ai testé aucun, mais il semble que même s'ils ne fonctionnent pas, vous pouvez obtenir des morceaux de code utiles.

0
Mark Kaplun

Si vous avez deux installations WordPress distinctes (une par domaine), vous pouvez définir WP_SITEURL et WP_HOME dans wp-config.php pour forcer une adresse/un nom d'hôte spécifique. Ajoutez ce code à chaque wp-config.php:

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

Et changez exemple.com avec le nom du domaine en question.

0
Sven

Vous pouvez changer le thème en fonction du domaine actuel comme

function select_theme( $current_theme ) {
    if ( 'domain1.com' === $_SERVER['HTTP_Host']) {
        return 'domain1 theme name';
    } else {
        return 'domain2 theme name';
    }
}

add_filter( 'stylesheet', 'select_theme' );
add_filter( 'template', 'select_theme' );
0
Mitul