ポータルサイト構築中、ブログを自動的にインストールする必要にかられて、WordPressをシステム的にインストールする方法を調査したので、記録。
最初は、
- wordPress.zipをサーバ某所においておく
- usrMake()がよばれたら、wordPress.zipをusrディレクトリに展開
- wp-config.phpを自動生成
- パーミッション調整
ていう手順でいけるかなーと作っていたんだけども、ふとしたところで、WordPressMUの存在に気づいたので、入れてみた。
すこぶる便利。
手順は以下。
1.WordPressMuのダウンロード
http://mu.wordpress.org/download/
2.設定は、ウィザードに従っていけば簡単
特に難しいところは無し。
3.テンプレートを編集可能にする
デフォルトだと、管理画面からテンプレートの編集は不可能。
そこで、PHPファイルを書き換えて、可能にする。
/wp-admin/includesフォルダ内の、mu.phpを編集。
①現行v2.8.6なら、556行目にある、
“unset( $submenu[‘themes.php’][10] ); // always remove the themes editor”
という項目の頭に、//を付けて、
“//unset( $submenu[‘themes.php’][10] ); // always remove the themes editor”
②現行v2.8.6なら、1128行目にある、
“if ( strpos( $_SERVER[‘PHP_SELF’], $page ) ) {”
とい項目を以下の様に変更。
“if ( strpos( $_SERVER[‘PHP_SELF’], $page ) && !is_site_admin() ) {”
※http://active-oita.com/subekoro/blog/archives/485 参照
4.自動ユーザ登録のための手順
ここから先は、普通は必要無し。
今回の開発では、クライアントの要望で、システム的にユーザ追加の必要があった。
まずは、単純に、下記URLのソースから、フォーム部分を持ってきてfile_get_content()でキックしようとしたけども、失敗。
http://an.koutaigu.com/blog/wp-admin/wpmu-blogs.php
管理者権限でログインした状態でないとダメらしい。
そりゃそうだ。
仕方が無いので、ソースを見てみて、直接、内部でユーザ登録をしている部分の関数を引っこ抜くことにする。
該当部分は、wpmu-edit.phpの、Addblogの部分。
ここをまるっとコピーして、少しだけ編集して、usrMake.phpを作成。
変更部分は、下記のとおり。
require_once(‘../wp-load.php’);
require_once(ABSPATH . WPINC . ‘/registration.php’);
print $current_site->domain;
//check_admin_referer(‘add-blog’);
コピペした段階だと、必要なrequire_onceが呼ばれていないので、最初にwp-loadとregistrationを呼んでおく。
そして、check_admin_refererを呼んでいる部分をコメントアウト。
あとは適当なHTMLファイルから、POSTでデータをusrMake.phpに渡してあげればOK。