WordPress + BuddyPressでSSL

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ではなく、ネットワークで有効化するプラグインの中に書く必要があります。

コメント

タイトルとURLをコピーしました