• WordPress 4.4のWP_Networkはnetwork設定と各siteの設定を分けて扱う

WordPress 4.4のWP_Networkはnetwork設定と各siteの設定を分けて扱う

公開日: 執筆:佐藤

WordPress multisiteで設定を作るときは、network全体で共有する値と、各siteだけで使う値を分けます。WordPress 4.4ではWP_Network classとnetwork optionを扱うfunctionが加わりました。これを使う目的は、設定を一か所へ集めることではありません。どの範囲へ効く値かを明らかにし、変更した人と影響を受けるsiteを追えるようにすることです。

一つのsiteの表示色、会社情報、問い合わせ先までをnetwork側へ置くと、修正が全siteへ広がります。反対に、全siteで同じにすべき値をsiteごとに持てば、どれが正しい設定かを保ちにくくなります。保存先を決める前に、その値を変えたときに誰の画面が変わるかを考えます。

network全体と一つのsiteを同じ保存先にしない

WordPress 4.4 Field Guideは、multisiteへWP_Network classが追加され、*_network_option functionによって複数networkを扱いやすくなったことを案内しています。get_network_option()、add_network_option()、update_network_option()、delete_network_option()のようなfunctionは、networkに属する設定を扱います。

network optionは「管理者が触る値」の別名ではありません。全siteに共通する必要がある値を置くためのものです。各siteの担当者が日常的に変える表示設定、投稿や固定pageの内容、画面ごとに異なる案内までをnetwork optionへ置けば、変更の範囲が広すぎます。

値の範囲 保存先を決める基準 変更する人
network全体の共通設定 すべてのsiteで同じ値を使う network administrator
一つのsiteの表示設定 siteごとに異なる可能性がある そのsiteの担当者
投稿や固定pageの内容 pageごとに異なる 編集担当者
plugin固有の一時data pluginの処理だけに必要 実装と運用を確認する人

たとえば、network全体の利用規約へのリンクを一つにそろえる必要があるなら、共有設定にする理由があります。一方、店舗ごとに電話番号や営業時間が違うなら、それは各siteの値です。同じ形式の入力欄を使うことと、同じ値を共有することは別です。入力欄が同じでも、保存先まで一つにする必要はありません。

更新前に設定の利用先を一覧にする

multisiteでは、network administratorと各siteの管理者が同じ人とは限りません。設定を変える権限と、変更後に影響を受けるsiteを、更新前に確認します。WordPress 4.4への更新で独自pluginやthemeを見直すなら、まずnetwork optionを読む処理と書き換える処理を探します。

  1. 独自pluginとthemeから、network optionを読む処理と更新する処理を探す。
  2. 値ごとに、全site共通か、一部のsiteだけで使うかを記録する。
  3. network administratorと各siteの担当者が、どこで変更できるかを確認する。
  4. 更新後に、代表siteと別のsiteで同じ設定を開く。
  5. 一方のsiteで変えた値が、意図せずほかのsiteへ出ていないかを見る。

この確認では、設定画面だけを見て終わらせません。テーマが値を読み込む画面、問い合わせ先やヘッダーのように全pageへ出る箇所、pluginが値を使う処理まで確認します。管理画面で正しい値に見えても、古いfunctionを使う独自コードが別の保存先を読んでいれば、公開画面は変わりません。

確認表には、値の名前だけでなく、現在の値、保存先、読み込むthemeまたはplugin、変更できる人、変更後に見るsiteを書きます。これがないまま更新すると、表示が変わったときに、WordPress本体の更新が原因なのか、設定を共有したことが原因なのかを分けられません。問題が起きたときに設定を戻せるよう、変更前の値も残します。

値の置き場が不明なまま機能を追加すると、担当者が別siteの設定を変えたり、変更が全体へ広がったりします。制作を頼む場合も、networkを管理するaccountと、各siteを編集するaccountを分けて残します。作業を委託しても、どの設定が共有され、どこまで変更できるのかを所有者が確認できなければ、引き継ぎはできません。

通常のWordPressへmultisite前提を持ち込まない

複数siteをまとめて運用していない通常のWordPressなら、multisiteのためのclassやfunctionを使う必要はありません。ここでいうnetworkは、複数のsiteを管理するmultisiteの範囲です。一つのWordPressを複数人で編集しているだけでは、network optionを使う理由になりません。

最初の一手は、network全体で共通にしたい値を一つだけ書き出すことです。その値が違えばどのsiteで困るのか、誰が変えるのか、変更を戻すときどこを直すのかを確認します。答えが曖昧なら、network optionへ置く前に各siteの設定として扱います。共有は、便利そうだからではなく、同じでなければ困る理由がある値に限ります。

共有する値を決めた後も、各siteで表示される内容まで同じにしてよいかを確認します。network側の設定を読むthemeがあっても、各siteの会社名、連絡先、記事内容まで一つの値にする必要はありません。共通設定を増やすほど、変更一回の影響範囲は広がります。全siteの画面を確認できる担当者と、変更を戻す手順がないなら、共有する値は小さく始める方が安全です。

戻る