Keys

BuddyPressがあまり使いものにならないくらいスケールの大きな話になっていることにクラクラしつつ、残っているLDAP対応に手を付ける。

てか、WPのマルチサイトっていくつまで耐えられるんだろう。

気になって少し調べてみたら、興味深い記事が。

WordPressマルチユーザー環境の事例 + Google Analytics 計測結果 | Googleアナリティクス解説Blog カグア!

なんていうか、1サイトでも30サイトでも200サイトでも、落ちるときは落ちるんですね。

 * * *

話を戻して、LDAPでのユーザ認証プラグインを探しました。

最初は日本語での説明もあった Simple LDAP Login を導入してみたけれど、アップデートがなされていないので怖くてボツ。

残っているのはすべて英語のようだけれど…まあ、いつもの超訳でがんばってみた。

WordPress > ldap ≪ Tags ≪ WordPress Plugins

LDAPタグのついたプラグインを眺めてみたら、結構色々ありました。

今回欲しかったのは、ユーザ管理をLDAPに任せてしまう機能。LDAP側でパスワードを変えたら、ログインパスワードも変わってくれるような。

どうせログインのところだし、それほど大きな設定もないだろうから入れて試してみましたよ。

WPMU Ldap Plugin

Requires: 3.1 or higher Compatible up to: 3.3.x Last Updated: 2012-6-13

WordPress MUのログイン機能をLDAPログインに上書きして使うタイプのもの。説明を見てみると、LDAPでログイン成功したユーザをWPに自動登録するようで。WP3.1以上に対応しているので、MUとか名残だと思って気にしなくても良さそうな。

となると…パスワード変えたらログインできなくなるのかな?
それとも、ログインできない→LDAP見に行く→OKじゃん、変えとくね→ログイン成功 ってなってれば良いんだけど。

とりあえず、入れてみた。

重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
Fatal error: Cannot redeclare wp_new_user_notification() in /——-/wp-content/plugins/wpmuldap/ldap/lib/wpmu_ldap_admin.functions.php on line 738

・・・・・・orz

wp_new_user_notification が競合しているよってエラー。
該当ファイルを開いて、738行目からの function を

if (!function_exists(‘wp_new_user_notification’) : ~ endif;

で囲んであげれば大丈夫なんだろうけど。

めんどくさいので次行ってみる。

LDAP LPRM

Requires: 3.0 or higher Compatible up to: 3.3.2 Last Updated: 2012-3-23

LDAP認証とユーザレベルの管理を有効にするよ、という必要十分な機能。

プラグインフォルダに突っ込んでネットワーク管理者画面から有効化してあげれば使える。

子サイトの 設定>LDAP Settings から設定する。特権振りかざして全部の子サイトで一気に設定できると良かったんだけどなー…

気を取り直して設定。と言っても変更したところは Base DN と Domain Controller(s) のみ。

  • Base DN → ベースとなる識別名。 例)dc=example, dc=or, dc=jp
  • Domain Controller(s) → 接続するホスト。 例)ldap.example.or.jp

権限も決められるようだけど、今回のテスト用LDAPデータの方に権限データが入っていなかったので(!)、全部規定の権限でのログインとなります。

これで Update Options ボタンを押せば設定完了。

画面の上の方にはテスト用フォームがあるので、LDAPに登録されているIDとパスワードでログイン確認できます。

これで勝つるー!と思って、ログインもできて、複数の子サイトにログインしてみようと思ったら管理者権限のログインができない!

FAQにちゃんと書いてありました。

Q. LDAPプラグインはWPのログイン機能より優先されるの?

A. はい。プラグインが有効になれば認証機能はLDAPシステムに渡されますヨ。

…まあ、当然と言えば当然ですHAHAHA。

というわけで一度プラグインフォルダの名前を変えて、無理やり管理者でログインしました。

気になったこと:

  • 複数の子サイトで同じLDAPデータが有効になっている場合、ユーザは最初にログインした子サイトに所属しているとみなされる。
  • でもLDAPが有効な他のサイトにもログインできる。
  • でも参加サイトには最初にログインしたサイトしか表示されない。
  • これを変更するには、他の子サイトの管理画面で、ユーザ登録してあげる必要がある。

うん、もうちょっとなんとかしたい。

今日は以上。修正した WPMU Ldap Plugin も試してみよう。

BuddyPress

BPにTwenty Elevenのテーマを適用させるのが意外と早く見つかって、適用できたのでさくっとメモ。

via: Template Pack Walkthrough » Twenty Eleven | BuddyPress Codex

英語ですがそのものズバリがあったので、基本的にはこのとおりにやるだけ。自分の環境では用があるのは2ページ目から。例によって超訳。

——-

a) bp-default と構造が少し違うので、header-buddypress.php と sidebar-buddypress.php を変えればOKです。

b)?header.php の一番最後に以下の一文を足して?header-buddypress.php として保存。

<div id=”primary”>

c) sidebar.php の一番最初に以下の文を足して?sidebar-buddypress.php として保存。

</div><!— #primary —>
<?php if ( bp_is_register_page() ) : ?>

? ? <script type=”text/javascript”>

? ? ? ? jQuery(document).ready( function() {

? ? ? ? ? ? if ( jQuery(‘div#blog-details’).length && !jQuery(‘div#blog-details’).hasClass(‘show’) )

? ? ? ? ? ? ? ? jQuery(‘div#blog-details’).toggle();

? ? ? ? ? ? jQuery( ‘input#signup_with_blog’ ).click( function() {

? ? ? ? ? ? ? ? jQuery(‘div#blog-details’).fadeOut().toggle();

? ? ? ? ? ? });

? ? ? ? });

? ? </script>

<?php endif; ?>

これで2つのファイルをアップロードして適用してみると・・・

おっと、サイドバーが下にずれてるじゃないか。

これはBPのコンテンツ部分が他より広いためなので?BuddyPress Template Pack のスタイルシートを変更します。/wp-content/plugins/bp-template-pack/bp.css の一番最後にスタイルを追加。

メインのほうが長くなると下にくっついてしまうので、それを解決すべく、最後だけ margin-bottom を 5% にしてあります。

これで Twenty Eleven の適用は完了!

BuddyPress

前回、BuddyPressのグループブログの設定で終わっていたので、その続き。といっても、グループブログよりも先にすることをしておかないといけない、通常のテーマをBPに互換する作業です。

その1はこちら →?[WP]マルチサイト+BuddyPress導入メモ – MEKEKEMORA

1.専用ページを作成する

画面の上部には下記のような説明文が鎮座しています。

BuddyPressのすべての機能を活用するBuddyPressと互換性のあるテーマを有効にする必要があります。デフォルトのテーマをバンドルしましたが、いくつかの互換性のある他のテーマをインストールしたり、既存のWordPressのテーマを更新できます。

このアクティブなBuddyPressの構成要素は、関連付けられているWordPressのページがありません: 活動動向, サイト追跡, ユーザーグループ, メンバー [修復]

そして修復ボタンをポチったら、BPの設定画面>ページ数に来たので、「新しいページ」からそれぞれ「活動動向, サイト追跡, ユーザーグループ, メンバー」用のページを下記のタイトル(スラッグ)で作成。

activity、group、member、tracking

細かいことは気にせずに、もう一度サイトネットワーク管理者>設定>BuddyPressを確認。ページ数のところを見るとページの設定ができるようになっていた。でもフォーラム作ってないよ。

設定の箇所はひとまず後にして、並んでいるタブの「フォーラム」を見る。

「サイト全体のフォーラム」は The bbPress Community というプラグインで動くようです。ひとまず「グループ用フォーラム」を作成。

[インストール完了]ボタンを押すと、

完了しました。設定ファイルを WordPress ルートディレクトリに bb-config.phpファイルとして保存しました。

・・・と、表示される。そしてまた設定画面に戻ったら、ここで出た。

このアクティブなBuddyPressの構成要素は、関連付けられているWordPressのページがありません: フォーラム?

先の流れと同様に forum ページを作って戻って設定。これでBP用のページはできたようです。ただ、それに割り当てられる外観(テーマ)がありません。

2.BuddyPress Compatibility

外観> BP Compatibility にアクセスします。子サイトならどこでも良いようですが、メインサイトが良いんじゃないでしょうか。
とにかく英語オンリーで説明も長いので、横文字苦手な方は心が折れそうになりますが、やることは少なく、3ステップになってるのでがんばってください。

まずはステップ1。テンプレートファイルを(WPが)自動で移動してみます。

[Move Template Files]をクリック。ファイルやフォルダのパーミッションや所有権がうまく合えば(?・777になっていればできるのかな)自動で移動してくれますが、移動できなかったので次のステップ。

ステップ2。自動でできないなら手動でやればいいじゃない。

~/wp-content/plugins/buddypress/bp-themes/bp-default/ にできている activity, blogs, forums, groups, members, registration を使いたいテーマのテーマ用フォルダに移動します。

移動したら、[I’ve finished moving template folders] をクリックして次へ。

ステップ3。レイアウトの微調整。

このページは説明が長くてキャプチャ取れてないのですが、適宜Google先生に翻訳をお願いするとそれほどぶっ飛んだ答えは返ってこないのでわかると思います。

超訳すると、一連の作業は終わったからページを確認して、ページが崩れてなければ終了ですよ、と。

BPは下記のような構造になっています。

[HEADER]

<div id=”container”>

<div id=”content”>

[PAGE CONTENT]

</div>

<div id=”sidebar”>

[SIDEBAR CONTENT]

</div>

</div>

[FOOTER]

もし現在使っているテーマが上記のようになっていなければ、page.php(なければindex.php)を直しましょう。

header.php → header-buddypress.php、?sidebar.php → sidebar-buddypress.php、 footer.php → footer-buddypress.php とコピーしてBP用のヘッダー、サイドバー、フッターのそれぞれを、下記のファイルで使用できます。

/activity/index.php

/blogs/index.php

/forums/index.php

/groups/index.php

/groups/create.php

/groups/single/home.php

/groups/single/plugins.php

/members/index.php

/members/single/home.php

/members/single/plugins.php

/members/single/settings/delete-account.php

/members/single/settings/notifications.php

/members/single/settings/general.php

/registration/register.php

/registration/activate.php

/blogs/create.php

あとは[finish]ボタンを押して完了です。

・・・と、ここまで来てようやくサイトを見てみましたよ。実際に BP Compatibility でやったことはヘッダ要ファイルなどの移動だけなので、案の定というべきか、作ったページはCSSが反映されていませんでした。あとで調整しよう。

ちなみに、ページは子サイトの分だけ作る必要があります。当然っちゃ当然か。

次はTwenty ElevenのCSSをBPに適用させてみるメモの予定。

BuddyPress

WordPressでそれぞれのCMSを構築すればいいよね!って話が、いつの間にか巨大なSNS構築の話になっていた。今回の要件は、

  1. 各グループにはそれぞれに所属するユーザがいる。(ユーザは別DBで管理される)
  2. ユーザはグループをまたいで所属でき、それぞれ属性が違う。(この属性は別DBで管理される)
  3. 各属性によってグループでの振る舞いを管理する。
  4. フォーラム、掲示板、ミーティング、サイト(≒ブログ)を各グループごとに持つ。
  5. スマートフォン対応。

・・・えっと、なかなかヘヴィーな要件ですが、そんな時は困ったときのWordPress!
もともとマルチサイトの構想はあったので、BuddyPressを導入してみることに。
別DBで管理ってところは、スクラッチでプラグインでも作って対応せんとならんかな。

参考サイト:
WordPressプラグイン「BuddyPress」でSNSサイトを作成 | Webクリエイターボックス

Googleで検索するとたいていヒットするこの親切さ。?

今回は、マルチサイト構成(ディレクトリ)になってるという前提で。

1. まずBPをダウンロード

http://wordpress.org/extend/plugins/buddypress/
Requires: 3.4 or higher Compatible up to: 3.4.1

現在のWPは3.4.1なので、BPのバージョンは1.6でOK。

2. 日本語化ファイルをダウンロード

Googleで調べて拾ってきたほうが良いようです。

via: BuddyPress日本語化ファイルの編集が100%に~: わたしのあれこれ

今回はこちらから拾って来ました。(多謝!)
ただ、v1.5.5なのであとで直す必要があるだろうなあと思いつつ、ダウンロード。

見比べてみると、1.6で色々変わっているようなところが多いので、ちょこちょと参考にさせてもらいつつ、potファイルをterapadで開いて、poファイル→poeditでmoファイルに変換した方が早い気がした。

ちなみにpoeditでもいじれるけど、テキストエディタでいじったほうが早いので、poeditはあくまでmoファイルの変換用ソフトってことで。

2012/8/15 追記:

(BuddyPress担当) WordPress 日本語版作成チーム – Google グループ

日本語化は上記グループにてなされているようです。翻訳のガイドラインもあって、適当じゃダメだなーと思ったので、追記して紹介。現在1.6にも対応しているdevelop版が出ていましたので、そちらを使わせていただきました。そんな頃にはBPが1.6.1になっていたりするのですが。


3. グループごとにブログを作れるようにしたい

BPでユーザごとにブログを作れる、とは色々な記事から知っていたものの、グループごとにはどうなんだろう…って、あったー!

via: BuddyPress のグループ専用ブログ ≪ スタッフのブログ

ということで、さくっとダウンロード。v1.8でした。

http://wordpress.org/extend/plugins/bp-groupblog/

Requires: WP 3.0 / BP 1.2 or higher Compatible up to: WP 3.4.1 / BP 1.6

4. BPのテーマはTwenty Elevenを使いたい

ということで、BuddyPress Template Packをインストールしておきます。6.でも追加できるのを知って4.に持ってきたのは内緒。ちょっと雲行きが怪しいので、これについてもあとでまとめよう。

http://wordpress.org/extend/plugins/bp-template-pack/

Requires: WordPress 3.0 / BuddyPress 1.2 or higher
Compatible up to: WordPress 3.3.1 / BuddyPress 1.5.4

3.4.1では保証されてませんよ的なメッセージが出ますが自己責任でGO!

5. サイトネットワーク管理者のページで上記プラグインを有効にする

管理者権限持ってて、有効にしたら BP Groupblog が消えて焦りました。何のことはなく、サイトネットワーク管理者のページではなく、子サイトのプラグイン管理画面にアクセスしていたせいでしたテヘペロ

先の BP Groupblog にコメントされているサイトではメニュー出ないバグがあったようですが、少なくとも1.8ではメニューに追加されていました。

6. BuddyPress セットアップを行う

有効化すると、サイトネットワーク管理者 > 更新 の中に BuddyPress Setup という項目が出てきます。

  • 構成要素 → セーブ&次へ
  • ページ数 → セーブ&次へ
  • パーマリンク → 日本語になった時の不安が残るものの、セーブ&次へ
  • テーマ → Twenty Elevenを使いたかったので、手動で現在のテーマに変更を選ぶ
  • 終了 → 完了&有効化

これで 設定に BuddyPress が表示されます。
GroupBlog Setup も表示されているので、次はその設定をば。


7. グループブログを設定する

  • Theme → Twenty Eleven を選択しました。他に使いたいテーマがあればそっちで。
  • Redirect → パス
  • Layout → パス
  • Defaults → Delete Initial Comment と Delete Blogroll Links にだけ Yes にチェック。
  • Validation → パス
  • About → Thanx!!

そして Save Changes で完了。

8. あとBPで入れたBPのためのプラグイン

via: BuddyPressで使える便利なプラグイン | Webクリエイターボックス +

BuddyPress No Mentions | Home | BuddyPress.org

WordPress > BuddyPress Mobile ≪ WordPress Plugins

ちなみにこれらはBPのプラグインですがWPのプラグインフォルダに入れるだけでOKです。

そして明日以降、BPの設定に続く。かも。(この時点でまだ稼働画面見てない)

PCサイトのスマホ版を作ってます。jQuery Mobileを使ってるものの、大人の事情でAJAXは使わないようにしています。それで $.mobile.ajaxEnabled = false; だけでは済まないので、諸々の設定を再確認することにしました。

via:
グローバル設定 | jQuery Mobile 1.1.0 日本語リファレンス
http://dev.screw-axis.com/doc/jquery_mobile/api/configuring_defaults/

jQuery Mobile Docs – Configuring default settings
http://jquerymobile.com/demos/1.1.1/docs/api/globalconfig.html

ajaxEnabled default: true

jQuery Mobileは自動的にリンクのクリックやフォームのサブミット処理をAjaxで制御するようになります。ここに false を指定すると、その制御を止めます。結果、URLはハッシュベースではなく通常のHTTPリクエストによるものになります。

AJAXを使わない場合には必須の設定ですね。

hashListeningEnabled default: true

jQuery Mobileは自動的に location.hash の変更を見張り、制御します。この値を false にすると、jQuery Mobileはハッシュ変更時の制御を止めます。それにより、制御を自分自身で行ったり、あるいはディープリンクをそのままにして指定したIDへ自動スクロールさせるようなことが出来ます。

HTML内に複数のページを設定している場合は、これをfalseにすると動かなくなります。逆に、ページ内リンクを使用したい場合はfalseにしておいたほうがいいですね。

pushStateEnabled default: true

history.replaceState をサポートしているブラウザでは、AjaxによるハッシュベースのURLを通常のドキュメントパスに変換するこの機能が有効になります。もしAjaxによる遷移機能を使わない、あるいはサイトの大部分が外部へのリンクであるような場合、この機能をオフにすることをお勧めします。

ということで、下記の設定になりました。

$(document).bind(“mobileinit”, function(){
$.mobile.ajaxEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
});