[WordPress] 別ディレクトリのWPとテーマを共有する

      2018/04/07

wordpress-logo

複数のWordPressを運営している場合に、別の場所にあるWordPressシステムとテーマファイルを共有する方法です。

全ファイルコピーではないので、部分共有も可能です。

SPONSORED LINK

複数のWordPressを同じデザインにしたい

複数のブログや、単一サイト内に複数のWordPressシステムを含むサイトを運営している場合、ほとんど同じテーマを使っていることも多いと思います。特に単一サイトの場合は、デザインの統一性のために同じデザインを使うことになると思います。

ですが、別々のWordPressシステムであればそれぞれテーマの設定が必要です。常に同じデザインにしておこうと思うと、片方に入れた変更を常に他方にも反映させる必要があります。

デザイン変更をたまにしかしないならいいんですが、ちょくちょく変更する場合には結構不便です。「あの変更はこっちにもしたんだっけ?」「どっちのWordPressで変更したんだっけ?」とかがよく発生します。それに、毎回変更内容をコピーするなんてスマートじゃありませんね。

マルチサイトにしない理由

複数のサイトでWordPressを使う場合、WordPressのマルチサイト機能を使う方法があります。マルチサイトであればテーマの共有も可能です。

ですが、マルチサイト機能にはいくつか不便な点があります。

WordPressのマルチサイト機能はあまり一般に使われているとは言えません。使い方を調べても情報が乏しく、困ったときに的確な情報が得られるとは限りません。実際、今回のようなテーマ共有の方法ですらあまり詳しい情報が得られませんでした。

マルチサイトがあまり使われていないので、プラグインの対応も芳しくありません。何か機能を追加したくても、ちょうどいいプラグインが対応していないかもしれません。

将来的な拡張性なども含めると不安が残りますし、単純に管理が複雑化(共有部分とサイト毎の部分の分離が難しくなる)することを懸念してマルチサイトは断念しました。

SPONSORED LINK

一方から他方のテーマを読み込み

WordPress自体の機能ではシステム外のテーマを読み込むことはできません。なので、直接テーマを呼び出せるようにPHPで記述しました。

wp2 ディレクトリにインストールされたWordPressから wp1 ディレクトリにインストールされたWordPressのテーマを参照することを想定します。まず wp2 の functions.php に以下を追加します。

function include_wp1_theme($filename) {
    wp1_theme_dir = str_replace('/wp2/', '/wp1/', STYLESHEETPATH);
    include( wp1_theme_dir .'/'. $filename);
}

STYLESHEETPATHには自身が属するテーマファイルのディレクトリパスが入っています。このパスの wp1 を wp2 に変更すると、wp1 のテーマディレクトリになります。

あとはファイル名を指定して include するだけです。

例えば、wp2 の header.php にはこれだけを書きます。

<?php include_wp1_theme('header.php'); ?>

こうすると、wp1 の header.php がここに代入されることになるので、wp1 と wp2 のどちらも wp1 の header.php を使うことになります。

functions.php は共有できない の共有方法

いくつかの方法を試しましたが、今のところ functions.php をうまく共有することはできないようです。

方法が分かったら追記しますね。以下の記事で解説しています。

[WordPress] 別ディレクトリのWPとfunctions.phpを共有する
複数のWordPressを運営している場合に、別の場所にあるWordPressシステムとテーマファイルを共有する方法です。 前回、functions.php以外のテー... 続きを読む

子テーマもOK

wp2 と同じ名前のディレクトリを参照しているので、子テーマから呼び出せば子テーマの内容が読み込まれます。

親テーマのアップデートは wp1 と wp2 で同時に行うことにして、普段は wp1 の子テーマだけを編集すれば良いということになります。

まとめ

functions.php に問題を残してしまいましたが、デザインを構成するphpファイルは共有することができました。PHPはサーバーサイドで実行されるからか、サーバー内の別ディレクトリのファイル読み込みが発生しても負担にはならないようで、ページ読み込み速度に体感できる差はありませんでした。

サイト管理をちょっとでも楽にしていきたいですね。

itjo レスポンシブ 本文下

 - WordPress
 - ,