WordPress + BuddyPressでSSL

August 15 2010, 4:10pm

WordPress + BuddyPressで局所的にSSLをかけたい場合、WordPress本体のほうは割と問題無いのですが、BuddyPressプラグインがあまりSSLを考慮していないので(考慮しているのはGravatarアイコンの表示くらい)、フィルタを追加したり、アクションそのものを入れ替えないと実現できません。

今回、

・プロフィールページ(/members)のナビゲーションリンクの一部 ・adminbarのLoginメニュー ・adminbarのMy Accountメニュー

をSSL化するために、いろいろ調べたのでメモ。

[フィルタの追加で済むもの]

・bp_get_displayed_user_nav_settingsフィルタ ・bp_core_admin_bar_cssフィルタ ・bp_core_fetch_avatar_urlフィルタ ・bp_core_fetch_avatarフィルタ

フィルタなので、http:をhttps:に書き換える処理を書けばOK。 プロフィールページのナビゲーション部分のリンクと、HTMLのヘッダに挿入されるadminbar.cssのURLがhttp固定です。あとはアバター画像のURL関連。なぜかGravatarから取得するアバター画像はSSLを考慮しているのに、WordPressのアバター画像はhttp固定。

[アクションを入れ替えないといけないもの]

・bp_adminbar_menuアクションのbp_adminbar_account_menu ・bp_adminbar_menuアクションbp_adminbar_login_menu

adminbarに表示されるMy AccountメニューとLoginメニューのリンクがhttp固定なので、それを書き換えたいわけですが、これらはアクションなので、オリジナルremove_action()して、新しいアクションをadd_action()しないといけません。オリジナルのアクションをコピペしてURLを出力している部分を書き換えればなんとかなります。

adminbarを弄っているので、このフィルタとアクションはfunctions.phpではなく、ネットワークで有効化するプラグインの中に書く必要があります。

Your favourite external commenting service goes here! I recommend http://www.disqus.com