WordPressのマルチサイトで変数の返り値を見てみた

WordPressプラグインをマルチサイトに対応させるためのテストと結果をメモします。

前回は

少し前に、リンクをカード形式で表示させるWordPressプラグイン「Pz-LinkCard」をマルチサイトで動かしてみました。

[link url=”https://popozure.info/20160821/10780″]

マルチサイト対応に向かって、もう少しあれこれテストしてみます。

テストプログラム1

アクティベーションしたときに、マルチサイト向けの変数などで、「ネットワーク有効化」されたのか、各ブログで有効化されたのかを検知できるか試してみる。

テストプログラムのアクティベーション時に呼ばれるサブルーチンはこんな感じ。

[php start-line=”34″]public function activation() {
echo ‘activation<br>’;
echo ‘is_multisite()=’.is_multisite().'<br>’;
echo ‘is_main_site()=’.is_main_site().'<br>’;
global $current_site , $current_blog , $blog_id;
echo ‘current_site=’.$current_site.'<br>’;
echo ‘current_blog=’.$current_blog.'<br>’;
echo ‘blog_id=’.$blog_id.'<br>’;
}[/php]

結果はこんな感じ。

is_multisite() is_main_site()
ネットワーク有効化 1 1
メインサイト 1 1
サブサイト1 1 null
サブサイト2 1 null

「ネットワーク有効化」したときと、メインサイトで「有効化」したときの違いは分からなかった。

グローバル変数の「$current_blog」と「$blog_id」の組み合わせも試してみた。

activation
is_multisite()=1
is_main_site()=1
current_site=

WP_Network Object
(
    [id:WP_Network:private] => 1
    [domain] => application.secret.jp
    [path] => /
    [blog_id:WP_Network:private] => 1
    [cookie_domain] => application.secret.jp
    [site_name] => マルチサイトのテスト
)

current_blog=

WP_Site Object
(
    [blog_id] => 1
    [domain] => application.secret.jp
    [path] => /
    [site_id] => 1
    [registered] => 2016-08-20 17:04:05
    [last_updated] => 2016-08-31 13:01:22
    [public] => 0
    [archived] => 0
    [mature] => 0
    [spam] => 0
    [deleted] => 0
    [lang_id] => 0
)

blog_id=1

グローバル変数の「$current_site」は現在の「WP_Network Object」という表示どおり、「サイトネットワーク番号」を返す。複数のネットワークは実装されていないため、今のところ値は変動しないっぽい。

グローバル変数の「$current_blog」は「WP_Site Object」。現在の「サイト情報」を返す。

表示された内容だと、ネットワーク有効化したときと、メインサイトで有効化したときとで見分けられない気がした。

テストプログラム2

アクティベーションしたときに、update_site_optionとupdate_optionでオプションを設定して、どんな風に設定されたかで「ネットワーク有効化」されたのか子サイトで有効化されたのか検知してみようと思う。

テストプログラムのアクティベーション時に呼ばれるサブルーチンはこんな感じ。

[php start-line=”34″]public function activation() {
echo ‘activation<br>’;

$this->options = get_site_option(‘pz_test_options’, null );
$this->options[‘active’] = 1;
update_site_option(‘pz_test_options’, $this->options);

$this->options = get_option(‘pz_test_options’, null );
$this->options[‘active’] = 2;
update_option(‘pz_test_options’, $this->options);
}[/php]

結果としては、site_optionはサイト全体で共通のオプションで、シングルサイトのときはoptionをアクセスするけど、マルチサイトのときはoptionとは別扱い。

optionは各サイトのオプションだけど、「ネットワーク有効化」のときはメインサイト扱いだった。

そっちじゃない「ネットワーク有効化のみ」設定

プラグインのプログラムのヘッダー部に「Network: true」と記述すると、ネットワーク有効化のみができるようになり、サイトごとに有効化ができなくなります。

[php mark=”7″]<?php
/*
Plugin Name: Pz-Test
Plugin URI: http://popozure.info
Description:
Version: 0.0.1
Network: True
Author: poporon
Author URI: http://popozure.info
License: GPLv2 or later
*/

defined(‘ABSPATH’) || die;[/php]

「false」にすると各サイトでも有効化できるようになるだけで、「ネットワーク有効化」だけを禁止する記述は分かりませんでした。

収穫なしという収穫

理想としては「ネットワーク有効化」したときは、どのサイトからも同じキャッシュテーブルを利用して、各サイトから「有効化」したときは、それぞれのキャッシュテーブルを利用するという感じでした。

アクティベーション時にはupdate_site_optionでサイトオプションを保存しておいてDBのテーブル名も保存しておいて、普段はget_optionして見つからなかったらget_site_optionする感じにすれば実現できそうですが、マルチサイト向けのコードを沢山書くと、WordPressの仕様変更時の対応に追われそうです。

当面、「Pz-LinkCard」のマルチサイト正式対応は厳しいという状態で、各サイトごとに有効化するのをお勧めとしようと思います。→ver2.0.7で対応しました。

DBアクセスに失敗したらactivateのルーチンをまわすくらいの対応は考えたいと思います。→ver2.0.0で対応しました。

では、この辺で。(^-^)o

さくらレンタルサーバーからXSERVERへ移転してみた

XSERVERのキャンペーンでドメインも無料で付くというので新しいドメインを取得して移転してみました。

XSERVERを契約してみた

さくらインターネットはPHPがCGI型で動いているようで、モジュール型に比べると遅いようです。

CGI型の利点としてはCPU負荷などの統計が取りやすいことなどがあるようですが、当サイトのアクセス数が増えるにつれ、「そもそもちゃんと動かない」ことが増えてきてしまいました。

WordPressのアクセス数が多くても軽いという噂のXSERVERで一番安いX10プランでもドメインが1個プレゼントされるというので、契約してみました。

[link url=”https://popozure.info/20161220/10843″]

貰ったドメインを設定

ドメイン設定

XSERVERの「インフォパネル」から「サーバーパネル」、「ドメイン」メニューのところにある「ドメイン設定」と選んでいき、貰ったドメインを追加しておきます。

ここで登録したドメインを使用してアクセスできるようになるまで数時間~数日かかる場合があります。アクセスできないからといって焦らないようにしましょう。

WordPressのインストール

今度は「サーバーID」を選択して、「ホームページ」のところにある「自動インストール」で「WordPress」をインストールしておきます。

(WordPressを自動インストールしなくても、ディレクトリとDBを自分で用意すれば大丈夫ですが、自動インストールしちゃっておいた方が楽な気がします。)

SSLの設定

無料でSSLの設定が出来るので、SSL化もしておきます。

「ドメイン」のところにある「SSL設定」から「独自SSL設定の追加」からSSLも追加しておきます。

SSL対応の「https://」のアドレスでアクセスするのも数時間かかるようなので、のんびり待ちましょう。

WordPressのファイル群をコピー

FTP等を利用して、WordPressのディレクトリ内のファイルを移転元(今回はさくらインターネット)から全部ダウンロードします。

移転先の自動インストールされたWordPressのディレクトリに全部上書きコピーします。

特にwp-contentに入っている画像なんかはエクスポート/インポートでは移行されないので、ちゃんとダウンロードしておきましょう。

DBのエクスポート/インポート

さくらレンタルサーバーのコントロールパネルからphpMyAdminに入って、DBを選んで、エクスポートを選びます。

形式はSQL、圧縮はgzipにしておきました。(圧縮なしだとファイルが大きすぎたり、zipだと上手く取り込めなかったりするのでgzipがお勧め。)

 

phpMyAdminに入って、DBを選んでからインポート。先ほどエクスポートしたgzipのファイルを選択して実行します。

WordPressの自動インストールをしたときに作成されたテーブルたちを選択して削除します。

サイトURL、WordPress URLの変更

WordPressの「設定」→「一般」から変更する「WordPress アドレス (URL)」と「サイトアドレス (URL)」を設定する必要がありますが、すでに旧URLで設定されている状態なので、まだWordPressは開けません。

phpMyAdminの画面のまま、「wp1_options」を開きます。(「wp1_」の部分はサイトによって違います。)

「option_name」のところに「siteurl」と書いてあるものが「WordPressアドレス」、「home」と書いてあるものが「サイトアドレス」にあたるります。

「編集」を押してそれぞれ新しいURLに変更して、「実行」を押して変更していきます。

Search regexで記事内リンクの置き換え

ドメインを変更しないならば、このまま運用開始出来るのですが、今回はドメイン変更も行います。

画像のURLや、リンク先のURLは移転元のままなので、WordPressプラグイン「Search regex」を使用して、置き換えを行っていきます。

「Source」から「Post content」を選んで、投稿内容を置き換え対象にします。

「Search pattern」に置き換え前の文字。ここでは旧サイトのURLを入れます。

「Replace pattern」に置き換え後の文字。ここでは新サイトのURLを入れます。

「Replace」ボタンを押すと置き換えたときにどうなるかが表示されます。

しっかり置き換え前と後を見て、大丈夫そうであれば、「Replace&Save」を押すと、ちゃんと置き換えたもので更新してくれます。

置き換えを更新したあとは、そのまま元に戻すことは出来ないので運用中のWordPressで置き換えをするときには十分注意をしてください。

たとえば自分のサイトをSSL化したときに「http://」→「https://」というような置き換えをしてしまうと、他サイトへのリンクも置き換わってしまいます。

「http://poporon.poponet.jp」→「https://poporon.poponet.jp」というように、なるべく前後の文字を含めて置き換えを行いましょう。

Amazonアソシエイトリンクの修正

Amazonアソシエイトのリンク、特に昔貼ったリンクは「http://」になっているので、SSL化したあとに表示されなくなってしまいます。

これも「src=”http://rcm-jp.amazon.co.jp/」から「src=”//rcm-jp.amazon.co.jp/」に置き換える等しておきます。

動作確認

今まで使っていたファイルとDBをそのまま持ってきているので、テーマやプラグインもそのまま動いている状態だと思います。

やはり「さくらインターネット」だとphpがCGI型なので、モジュール型のプランが選べる方がWordPressは速いようです。

新しいドメインは無料で貰えて、SSL化もさくっと出来て、軽くなって、良かった良かった。

では、この辺で。(^-^)o



XSERVER契約してみた。今ならドメイン1個プレゼント!Σ(゚ロ゚)o

「安心さと快適さを兼備した高性能レンタルサーバー」といううたい文句の「XSERVER」を契約してみました。

(移転はもうちょっとしてから…。)

ドメインプレゼントキャンペーン中!

すでに2016年9月2日(金)12:00から始まっているキャンペーンで、12月23日(金)18:00までに契約すれば、独自ドメイン(.com/.net/.org/.biz/.infoからいずれ)を1個プレゼントしてくれます。【終了しました】

2017年1月11日(水)12:00から2017年2月28日(火)18:00までに契約すれば、独自ドメイン(.com/.net/.org/.biz/.infoからいずれ)を1個プレゼントしてくれるキャンペーンがまた始まりました!

[link url=”https://www.xserver.ne.jp/campaign/campaign_160902.php”]

36ヶ月契約で月額900円換算(12ヶ月だと月額1,000換算)になるX10プランでもドメインが1個プレゼント。

しかも、「今回ご契約のサーバーをご利用の間は更新費もずっと無料!」とのこと。

ちなみに、X20/X30プランは特典として「.com .net .org .biz .info な中から1つ無料で独自ドメインをプレゼント」というのがありますが、これとは別のキャンペーンみたいです。

つまり、通常はドメインを貰えない最安のX10プランでも独自ドメインが貰えちゃう!Σ(゚ロ゚)o゙

レンタルサーバーの契約を解除しない限り、未来に渡ってドメインの更新費もかからないってことなので、独自ドメインも欲しかった人は、ここがチャンスじゃないかなっ!?Σ(゚ロ゚)o゙

さっそく申し込み

現在のレンタルサーバーは「さくらインターネット」の「スタンダードプラン」です。

月額525円の安いプランなので、特に不満も無かったのですが、ずっとサイトが重くて重くて・・・。

「XSERVERの人はアクセス速いよなぁ」なんて思っていたところに、ドメインのキャンペーンもやっていたことに気付いて、今回申し込んでみました。

10日間の無料お試し期間

10日間の無料お試し期間がありますので、通常はWordPressを入れてみたり、他のことをしてみたり、あれこれ動きを確認します。

気に入ったら支払情報を入力して本契約します。

本契約、支払いの更新期間はどうする?

今回はドメインを取得しちゃうのもメインだったので、とっとと本契約しちゃいます。

と、その前に。

「取得したいドメイン名」がすでに誰かに取得されていないか確認しておきましょう。

サーバーを契約したけど、取りたいドメイン名は既に使用中だった…ということになりませんように…(^-^;

さて、「料金のお支払い」から、支払いをするプランにチェックを入れて、「更新期間」を選択して「お支払い方法を選択する」ボタンを押します。

初期手数料が3,000円かかり、月額1,000円×12か月分を足した15,000円(税込16,200円)が今回の支払い金額になります。

12か月だと月額換算で1,000円、36か月にすれば月額換算で900円と安くなるのですが、3年ごとに支払いが来るよりも、毎年均一の支払い額にしたかったので12か月にしました。

プラン X10
更新期間 12ヶ月 24ヶ月 36ヶ月
初期費 3,000円 3,000円 3,000円
月額 1,000円 950円 900円
支払金額 15,000円 25,800円 35,400円
(税込) (16,200円) (27,864円) (38,232円)

ちなみに、3年、6年運用したときの金額も表にしてみます。(税抜き)

12ヶ月 24ヶ月 36ヶ月
1年目 15,000円 25,800円 35,400円
2年目 12,000円 – –
3年目 12,000円 22,800円 –
4年目 12,000円 – 32,400円
5年目 12,000円 22,800円 –
6年目 12,000円 – –
合計 75,000円 71,400円 67,800円

6年間で税抜き7,200円の差が大きいと思う場合は36ヶ月更新も良いと思います。

本契約してキャンペーンドメイン取得

支払いをする前は、「プレゼントドメイン」を開いても、「キャンペーンドメイン」を開いても、対象のサーバIDを選択できない状態でした。

支払い登録をして本契約したところ、「キャンペーンドメイン」でドメイン名を選択する画面が出てきました。

「.com」「.net」「.org」「.biz」「.info」を組み合わせて、取得したい独自ドメイン名を登録します。

「ドメイン検索」を押して取得に問題が無ければ確認画面が表示されて、「キャンペーンドメイン申請」を押すと登録されます。

「キャンペーンドメインの取得を完了しました。」と表示されれば大丈夫です。

独自ドメインがDNSに反映されて利用できるようになるまで数時間かかる場合もあるので、すぐにブラウザに入力して表示されなくてもあわてないようにしましょう。

設定とかはまたゆっくり…

とりあえず、今回取得したドメインにアクセスできるところまでは確認できたのですが、設定とかはまたのんびりしていきたいと思います。

では、この辺で。(^-^)o