SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
1
プラグインフックの
仕組みとカスタマイズ
BuddyPressとSubscribe2
水野 史土
http://php-web.net/
mizuno
2
WordPress に関する活動
●
WordBench
●
川崎、名古屋、大阪、神戸
●
オープンソースカンファレンス (OSC)
●
東京、名古屋、京都、神戸
●
公式マニュアル (Codex)
●
プラグイン配布
●
ShowID for Post/Page/Category/Tag/Comment
●
Select Category to Post
3
プラグイン
● WP にプログラムを追加(どこで?何を?)
● 追加する場所 → フック
● プログラムの中身 → PHP
● フィルターフックとアクションフック
● WP に多数用意されている
● ソースを読んでフックの箇所を調べる
● プラグイン同士の整合性に注意する
● フック箇所/中身を調べる
4
フィルターフック
●
WP の処理データを改変
●
the_title (記事タイトル)
●
excerpt_length (抜粋の長さ)
●
フックでプラグインが実行可能
●
add_filter(フック名, プラグイン関数)
●
Codex の例: 抜粋の長さを変える
●
どこで? → 抜粋
●
何を? → 長さの変更
5
WP の処理
抜粋
長さの変更
WP に apply_filters が用意されている
add_filter でプラグイン登録
「抜粋の長さを変更」を実行
apply_filters('excerpt_length')
add_filter
6
例: 抜粋の長さを変える
function new_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');
フック名 関数
Multibyte patch 使用時は excerpt_mblength
7
アクションフック
●
WP の処理途中の目印
●
wp_head (header.php読込)
●
comment_post (コメント投稿)
●
フックでプラグインが実行可能
●
add_action(フック名, プラグイン関数)
●
Codex の例: HTMLヘッダーにFavicon表示
●
どこで? → ヘッダー読込
●
何を? → favicon 追加
8
WP の処理
ヘッダー読込
favicon 追加
WP に do_action が用意されている
add_action でプラグイン登録
「favicon 追加」を実行
do_action('wp_head')
add_action
9
例: ヘッダー → favicon表示
function favicon_link() {
echo '<link rel="shortcut icon"
type="image/x-icon" href="/favicon.ico" />' .
"n";
}
add_action('wp_head', 'favicon_link');
フック名 関数
10
Subscribe2
●
メルマガプラグイン
●
どこで?
– ユーザー登録時
●
何を?
– メルマガ登録
もちろん記事投稿-メー
ル配信もある
11
WP の処理
ユーザー登録
Subscribe2 に登録する
WPのユーザー登録にフックする
WP登録と同時にメルマガに登録
12
BuddyPress
●
WPをソーシャルネットワーク化
●
ワードベンチ http://wordbench.org/
●
スローフードあいち http://www.slowaichi.net/
●
独自の関数、独自フックが多数
●
ソースは比較的綺麗
●
独自の関数/フックは bp_ で始まる
13
BuddyPress と他のプラグイン
●
WP用のプラグインをBPで使いたい
●
BP 独自のフックがある
●
そのままで動くとは限らない
●
BuddyPressのフックで動かす
●
BuddyPressにはフックが多く用意されている
●
テンプレートファイルを調べる
●
プラグインのフック箇所を書き換える
14
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
BPのユーザー登録処理がWPと異なる
そのままではメルマガ登録できない
15
16
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
BPのユーザー登録にフックする
BP登録と同時にメルマガに登録
17
18
Subscribe2のソースを調べる
●
メルマガ登録処理をする関数(メソッド)
●
s2class->register_form
●
フック先を調べる
●
add_action('register_form', array(&$this,
'register_form'));
19
WP の処理
ユーザー登録
Subscribe2 に登録する
add_aciton('register_form') は、
WP のユーザー登録にフックする
add_action('register_form')
do_action('register_form')
20
BPでのフックの場所を調べる
● WordPress
● ファイル wp-login.php
● フック register_form
● BuddyPress
● ファイル bp-themes/bp-default/registration/register.php
● フック bp_custom_profile_edit_fields
● subscribe2.php で該当箇所を書き換える
add_action('register_form', array(&$this, 'register_form'));
add_action('bp_custom_profile_edit_fields', array(&$this, 'register_form'));
21
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
add_action('bp_custom_profile_edit_fields')
に変更して、BP のユーザー登録にフックする
do_action('bp_custom_profile_edit_fields')
add_action('bp_custom_profile_edit_fields')
22
プラグイン本体は改変しない
● 前述の方法はプラグイン本体を書き換える
● プラグインアップデート時に困る
● プラグイン本体は書き換えない方法
● functions.php に書く
if ( class_exists('s2class') && $mysubscribe2 instanceof s2class ) {
add_action('bp_custom_profile_edit_fields', array(&$mysubscribe2,
'register_form'));
}
23
参考資料&ライセンス
●
Codex http://wpdocs.sourceforge.jp/
●
BuddyPress http://buddypress.org/
●
Subscribe2
http://subscribe2.wordpress.com/
●
CC-BY-SA 表示&継承
●
誰でも自由に利用可能
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 1
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 1
プラグインフックの
仕組みとカスタマイズ
BuddyPressとSubscribe2
水野 史土
http://php-web.net/
mizuno
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 2
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 2
WordPress に関する活動
●
WordBench
●
川崎、名古屋、大阪、神戸
●
オープンソースカンファレンス (OSC)
●
東京、名古屋、京都、神戸
●
公式マニュアル (Codex)
●
プラグイン配布
●
ShowID for Post/Page/Category/Tag/Comment
●
Select Category to Post
ワードベンチ:川崎、名古屋、大阪、神戸
ユーザー同士で交流
OSC:東京、名古屋、京都、神戸
他のCMS(Concrete5, Drupal, Geeklog,
Joruri, MODx, Typo3等)やLinux、MySQL等、
ウェブを支えるコミュニティと交流
公式マニュアル
ドキュメントの共有
プラグイン
ShowID for Post/Page/Category/Tag/Comment
Select Category to Post(公式に登録準備中)
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 3
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 3
プラグイン
● WP にプログラムを追加(どこで?何を?)
● 追加する場所 → フック
● プログラムの中身 → PHP
● フィルターフックとアクションフック
● WP に多数用意されている
● ソースを読んでフックの箇所を調べる
● プラグイン同士の整合性に注意する
● フック箇所/中身を調べる
プラグイン:
どこで、何をするかを決める
ワードプレス本体の機能はそれほど多くない
プラグインを作ることで拡張可能
フィルターとアクションの2種類のフック
公式マニュアルの例を元に解説
プラグイン同士が競合することがある
それぞれのプラグイン中身を調べておく
フックする箇所に注意する
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 4
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 4
フィルターフック
●
WP の処理データを改変
●
the_title (記事タイトル)
●
excerpt_length (抜粋の長さ)
●
フックでプラグインが実行可能
●
add_filter(フック名, プラグイン関数)
●
Codex の例: 抜粋の長さを変える
●
どこで? → 抜粋
●
何を? → 長さの変更
フィルターフックとアクションフックがある
ワードプレスの処理データを変更する場合はフィル
ターを使う
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 5
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 5
WP の処理
抜粋
長さの変更
WP に apply_filters が用意されている
add_filter でプラグイン登録
「抜粋の長さを変更」を実行
apply_filters('excerpt_length')
add_filter
抜粋の長さを変更する
ワードプレス側
apply_filters が用意されている
プラグインの側
フィルターに対する処理を書く
add_filter でフックする
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 6
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 6
例: 抜粋の長さを変える
function new_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');
フック名 関数
Multibyte patch 使用時は excerpt_mblength
フィルターフックの例
抜粋の長さ(デフォルト55単語)を変更できる
日本語の場合(マルチバイトパッチ使用)は、
excerpt_mblength で設定する
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 7
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 7
アクションフック
●
WP の処理途中の目印
●
wp_head (header.php読込)
●
comment_post (コメント投稿)
●
フックでプラグインが実行可能
●
add_action(フック名, プラグイン関数)
●
Codex の例: HTMLヘッダーにFavicon表示
●
どこで? → ヘッダー読込
●
何を? → favicon 追加
アクションフックは、ワードプレスの処理の目印
フックのある箇所で、プラグイン実行
PHP で記述するので、自由度、汎用性に優れる
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 8
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 8
WP の処理
ヘッダー読込
favicon 追加
WP に do_action が用意されている
add_action でプラグイン登録
「favicon 追加」を実行
do_action('wp_head')
add_action
ヘッダー読込時にファビコンを追加する
ワードプレス側
do_action が用意されている
プラグイン側
フックでの処理を書く
フックする場所を add_action で指定する
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 9
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 9
例: ヘッダー → favicon表示
function favicon_link() {
echo '<link rel="shortcut icon"
type="image/x-icon" href="/favicon.ico" />' .
"n";
}
add_action('wp_head', 'favicon_link');
フック名 関数
HTML ヘッダー部分に、ファビコンを表示する
wp_head のところで、ヘッダー出力処理をする
ワードプレス本体やテンプレートを改変しないでカ
スタマイズできる
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 10
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 10
Subscribe2
●
メルマガプラグイン
●
どこで?
– ユーザー登録時
●
何を?
– メルマガ登録
もちろん記事投稿-メー
ル配信もある
サブスクライブは、メルマガ配信プラグイン
ユーザー登録時に、「メルマガ登録する?」か選択
可能
もちろん、記事投稿 → メール投稿という処理がメイ
ンだが、今回取り上げるのはこちら
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 11
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 11
WP の処理
ユーザー登録
Subscribe2 に登録する
WPのユーザー登録にフックする
WP登録と同時にメルマガに登録
サブスクライブは、ワードプレスのユーザー登録に
フックしている
ワードプレスのユーザー登録時に、「メルマガ登
録」も一緒に行うことができる
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 12
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 12
BuddyPress
●
WPをソーシャルネットワーク化
●
ワードベンチ http://wordbench.org/
●
スローフードあいち http://www.slowaichi.net/
●
独自の関数、独自フックが多数
●
ソースは比較的綺麗
●
独自の関数/フックは bp_ で始まる
バディプレスは、ソーシャルネットワークシステム
を作るためのプラグイン
利用例:ワードベンチ、スローフードあいち等
技術的な話
バディプレス独自の関数、独自のフックがたく
さん用意されている
ソースは綺麗(WP本体は汚い)中身を理解し
やすい
独自の関数やフックは bp_ で始まる
他のプラグインと名前が被ることはまず無い
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 13
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 13
BuddyPress と他のプラグイン
●
WP用のプラグインをBPで使いたい
●
BP 独自のフックがある
●
そのままで動くとは限らない
●
BuddyPressのフックで動かす
●
BuddyPressにはフックが多く用意されている
●
テンプレートファイルを調べる
●
プラグインのフック箇所を書き換える
バディプレスには、独自のフックがある
ワードプレス用プラグインがそのまま動作するとは
限らない
プラグインのフック箇所を調べて、バディプレスの
フックに書き換える
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 14
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 14
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
BPのユーザー登録処理がWPと異なる
そのままではメルマガ登録できない
バディプレスは独自の登録画面を用意しており、そ
こからユーザー登録する
サブスクライブをそのままインストールした場合、
バディプレスのユーザー登録にフックしていない
ので、バディプレスの登録画面で「メルマガ登
録」を一緒にはできない
一度にできるほうが、ユーザーにとって嬉しい
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 15
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 15
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 16
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 16
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
BPのユーザー登録にフックする
BP登録と同時にメルマガに登録
サブスクライブのフック先をバディプレスの登録画
面に変更すればOK
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 17
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 17
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 18
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 18
Subscribe2のソースを調べる
●
メルマガ登録処理をする関数(メソッド)
●
s2class->register_form
●
フック先を調べる
●
add_action('register_form', array(&$this,
'register_form'));
プラグインのソースを調べる
メルマガ登録処理をしている関数(オブジェクト指
向なので、メソッド)を調べる
s2class->register_form
そのメソッドがフックしている場所を調べる
register_form
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 19
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 19
WP の処理
ユーザー登録
Subscribe2 に登録する
add_aciton('register_form') は、
WP のユーザー登録にフックする
add_action('register_form')
do_action('register_form')
プラグインの初期設定
add_action('register_form')
ワードプレスのユーザー登録にフックしている
バディプレスのユーザー登録画面では、フック
を呼び出ししない
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 20
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 20
BPでのフックの場所を調べる
● WordPress
● ファイル wp-login.php
● フック register_form
● BuddyPress
● ファイル bp-themes/bp-default/registration/register.php
● フック bp_custom_profile_edit_fields
● subscribe2.php で該当箇所を書き換える
add_action('register_form', array(&$this, 'register_form'));
add_action('bp_custom_profile_edit_fields', array(&$this, 'register_form'));
サブスクライブがフックしている場所をワードプレ
ス、バディプレスのソースを調べて探す
ワードプレスでは、wp-login.php の register_form
バディプレスでは、register.php の
bp_custom_profile_edit_fields
サブスクライブプラグインの、フック箇所を書き換
えることで、バディプレスのユーザー登録画面に
フックする
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 21
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 21
WP の処理
ユーザー登録
Subscribe2 に登録する
BP の処理
ユーザー登録
add_action('bp_custom_profile_edit_fields')
に変更して、BP のユーザー登録にフックする
do_action('bp_custom_profile_edit_fields')
add_action('bp_custom_profile_edit_fields')
サブスクライブのフック先をバディプレスの登録画
面に変更すればOK
bp_custom_profile_edit_fields にフックする
Subscribe2.php を書き換えれば解決する
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 22
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 22
プラグイン本体は改変しない
● 前述の方法はプラグイン本体を書き換える
● プラグインアップデート時に困る
● プラグイン本体は書き換えない方法
● functions.php に書く
if ( class_exists('s2class') && $mysubscribe2 instanceof s2class ) {
add_action('bp_custom_profile_edit_fields', array(&$mysubscribe2,
'register_form'));
}
プラグイン本体は書き換えないようにすると、プラ
グインアップデート時に楽(大幅に仕様変更が
あった時は別だが)
Subscribe2 プラグインはカスタマイズしやすいよう
に記述されている。オブジェクト指向で書かれて
いないプラグインだと大変かもしれない。
Oct. 30, 2010
Mizuno WordCamp Nagoya 2010 23
Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 23
参考資料&ライセンス
●
Codex http://wpdocs.sourceforge.jp/
●
BuddyPress http://buddypress.org/
●
Subscribe2
http://subscribe2.wordpress.com/
●
CC-BY-SA 表示&継承
●
誰でも自由に利用可能
公式マニュアル、プラグインのサイトの紹介
この資料のライセンス
クリエイティブコモンズ表示継承
引用元を表記する
同一ライセンスにする
を満たせば、誰でも自由に利用可能
ワードプレス、ブラグイン、バディプレスに興味を
もった人は、自由に使ってください。

Mais conteúdo relacionado

Mais procurados

Sphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントSphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントGo Yamada
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会Tetsuya Morimoto
 
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介Takayuki Shimizukawa
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
マークアップ言語の拡張 メリットとデメリット #hankumi
マークアップ言語の拡張 メリットとデメリット #hankumiマークアップ言語の拡張 メリットとデメリット #hankumi
マークアップ言語の拡張 メリットとデメリット #hankumiTakeshi Komiya
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Yusuke Miyazaki
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版Keiichiro Shikano
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Shinya Okano
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組みTakayuki Shimizukawa
 
Sphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjpSphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjpTakeshi Komiya
 
//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編Yuki Igarashi
 
まめフラスコで遊ぼう
まめフラスコで遊ぼうまめフラスコで遊ぼう
まめフラスコで遊ぼうlibpanda
 

Mais procurados (20)

Sphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメントSphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメント
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
マークアップ言語の拡張 メリットとデメリット #hankumi
マークアップ言語の拡張 メリットとデメリット #hankumiマークアップ言語の拡張 メリットとデメリット #hankumi
マークアップ言語の拡張 メリットとデメリット #hankumi
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 
Sphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjpSphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjp
 
Sphinx GO!!
Sphinx GO!!Sphinx GO!!
Sphinx GO!!
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編//publish/ MSPTutorial 応用編
//publish/ MSPTutorial 応用編
 
まめフラスコで遊ぼう
まめフラスコで遊ぼうまめフラスコで遊ぼう
まめフラスコで遊ぼう
 

Destaque

キンドルダイレクトパブリッシングで電子書籍出版
キンドルダイレクトパブリッシングで電子書籍出版キンドルダイレクトパブリッシングで電子書籍出版
キンドルダイレクトパブリッシングで電子書籍出版Fumito Mizuno
 
WordCamp Tokyo 2013 Security
WordCamp Tokyo 2013 SecurityWordCamp Tokyo 2013 Security
WordCamp Tokyo 2013 SecurityFumito Mizuno
 
ソフトウェアの国際化に協力しやすくする
ソフトウェアの国際化に協力しやすくするソフトウェアの国際化に協力しやすくする
ソフトウェアの国際化に協力しやすくするFumito Mizuno
 
concrete5のアドオン
concrete5のアドオンconcrete5のアドオン
concrete5のアドオンFumito Mizuno
 
コンクリートファイブで作るポータルサイト
コンクリートファイブで作るポータルサイトコンクリートファイブで作るポータルサイト
コンクリートファイブで作るポータルサイトFumito Mizuno
 
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみたPHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみたFumito Mizuno
 
WordPress, concrete5, Drupal
WordPress, concrete5, DrupalWordPress, concrete5, Drupal
WordPress, concrete5, DrupalFumito Mizuno
 
WordPress の国際化方法
WordPress の国際化方法WordPress の国際化方法
WordPress の国際化方法Fumito Mizuno
 
Novius OSの紹介 at CMS fun
Novius OSの紹介 at CMS funNovius OSの紹介 at CMS fun
Novius OSの紹介 at CMS funFumito Mizuno
 
Concrete5 アドオン一覧
Concrete5 アドオン一覧Concrete5 アドオン一覧
Concrete5 アドオン一覧Fumito Mizuno
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1Fumito Mizuno
 
使ってみて気づいた AGPL ライセンスの メリット・デメリット
使ってみて気づいた AGPL ライセンスの メリット・デメリット使ってみて気づいた AGPL ライセンスの メリット・デメリット
使ってみて気づいた AGPL ライセンスの メリット・デメリットFumito Mizuno
 
Novius os chiba の紹介
Novius os chiba の紹介Novius os chiba の紹介
Novius os chiba の紹介Fumito Mizuno
 

Destaque (17)

Sahana20120429
Sahana20120429Sahana20120429
Sahana20120429
 
キンドルダイレクトパブリッシングで電子書籍出版
キンドルダイレクトパブリッシングで電子書籍出版キンドルダイレクトパブリッシングで電子書籍出版
キンドルダイレクトパブリッシングで電子書籍出版
 
Word presssecurity
Word presssecurityWord presssecurity
Word presssecurity
 
OSC Kobe 2010
OSC Kobe 2010OSC Kobe 2010
OSC Kobe 2010
 
WordCamp Tokyo 2013 Security
WordCamp Tokyo 2013 SecurityWordCamp Tokyo 2013 Security
WordCamp Tokyo 2013 Security
 
ソフトウェアの国際化に協力しやすくする
ソフトウェアの国際化に協力しやすくするソフトウェアの国際化に協力しやすくする
ソフトウェアの国際化に協力しやすくする
 
concrete5のアドオン
concrete5のアドオンconcrete5のアドオン
concrete5のアドオン
 
コンクリートファイブで作るポータルサイト
コンクリートファイブで作るポータルサイトコンクリートファイブで作るポータルサイト
コンクリートファイブで作るポータルサイト
 
SAHANA Eden
SAHANA EdenSAHANA Eden
SAHANA Eden
 
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみたPHPカンファレンス北海道 php技術者認定上級試験を受けてみた
PHPカンファレンス北海道 php技術者認定上級試験を受けてみた
 
WordPress, concrete5, Drupal
WordPress, concrete5, DrupalWordPress, concrete5, Drupal
WordPress, concrete5, Drupal
 
WordPress の国際化方法
WordPress の国際化方法WordPress の国際化方法
WordPress の国際化方法
 
Novius OSの紹介 at CMS fun
Novius OSの紹介 at CMS funNovius OSの紹介 at CMS fun
Novius OSの紹介 at CMS fun
 
Concrete5 アドオン一覧
Concrete5 アドオン一覧Concrete5 アドオン一覧
Concrete5 アドオン一覧
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
 
使ってみて気づいた AGPL ライセンスの メリット・デメリット
使ってみて気づいた AGPL ライセンスの メリット・デメリット使ってみて気づいた AGPL ライセンスの メリット・デメリット
使ってみて気づいた AGPL ライセンスの メリット・デメリット
 
Novius os chiba の紹介
Novius os chiba の紹介Novius os chiba の紹介
Novius os chiba の紹介
 

Semelhante a Mizuno buddypress-plugin

WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてTakahiro Kambe
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」ericsagnes
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会Yuji Otani
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~Toru Miki
 
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906Teruo Kawasaki
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集Hidekazu Ishikawa
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure FunctionsKeiji Kamebuchi
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理Tadashi Miyazato
 
Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefoxdynamis
 
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るKEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るandroid sola
 
Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Kenji Shirane
 
安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識Fumito Mizuno
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)Masataka Kondo
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントMasaki NIWA
 
パッチを書いてみよう(第17回Nseg勉強会LT)
パッチを書いてみよう(第17回Nseg勉強会LT)パッチを書いてみよう(第17回Nseg勉強会LT)
パッチを書いてみよう(第17回Nseg勉強会LT)Masahiro Yamada
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用文樹 高橋
 

Semelhante a Mizuno buddypress-plugin (20)

WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えて
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
WordPress サイト制作におけるデプロイメントを考える ~Git とデプロイメントサービスの活用~
 
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
オープンソースのETLツール Pentaho Data Integration(PDI)のご紹介_20140906
 
Pbox on softlayer
Pbox on softlayerPbox on softlayer
Pbox on softlayer
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集愛と涙のWordPress無理やりカスタマイズ事例集
愛と涙のWordPress無理やりカスタマイズ事例集
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefox
 
KEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来るKEONとPEAKが無くてもFirefox OS開発出来る
KEONとPEAKが無くてもFirefox OS開発出来る
 
Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~Drupal のコア要素を知る ~構築を支える道具立て~
Drupal のコア要素を知る ~構築を支える道具立て~
 
安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識安全なテーマ作成のためのPHPの知識
安全なテーマ作成のためのPHPの知識
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
パッチを書いてみよう(第17回Nseg勉強会LT)
パッチを書いてみよう(第17回Nseg勉強会LT)パッチを書いてみよう(第17回Nseg勉強会LT)
パッチを書いてみよう(第17回Nseg勉強会LT)
 
12 総合演習Word Pressの利用
12 総合演習Word Pressの利用12 総合演習Word Pressの利用
12 総合演習Word Pressの利用
 

Mizuno buddypress-plugin

  • 3. 3 プラグイン ● WP にプログラムを追加(どこで?何を?) ● 追加する場所 → フック ● プログラムの中身 → PHP ● フィルターフックとアクションフック ● WP に多数用意されている ● ソースを読んでフックの箇所を調べる ● プラグイン同士の整合性に注意する ● フック箇所/中身を調べる
  • 4. 4 フィルターフック ● WP の処理データを改変 ● the_title (記事タイトル) ● excerpt_length (抜粋の長さ) ● フックでプラグインが実行可能 ● add_filter(フック名, プラグイン関数) ● Codex の例: 抜粋の長さを変える ● どこで? → 抜粋 ● 何を? → 長さの変更
  • 5. 5 WP の処理 抜粋 長さの変更 WP に apply_filters が用意されている add_filter でプラグイン登録 「抜粋の長さを変更」を実行 apply_filters('excerpt_length') add_filter
  • 6. 6 例: 抜粋の長さを変える function new_excerpt_length($length) { return 20; } add_filter('excerpt_length', 'new_excerpt_length'); フック名 関数 Multibyte patch 使用時は excerpt_mblength
  • 7. 7 アクションフック ● WP の処理途中の目印 ● wp_head (header.php読込) ● comment_post (コメント投稿) ● フックでプラグインが実行可能 ● add_action(フック名, プラグイン関数) ● Codex の例: HTMLヘッダーにFavicon表示 ● どこで? → ヘッダー読込 ● 何を? → favicon 追加
  • 8. 8 WP の処理 ヘッダー読込 favicon 追加 WP に do_action が用意されている add_action でプラグイン登録 「favicon 追加」を実行 do_action('wp_head') add_action
  • 9. 9 例: ヘッダー → favicon表示 function favicon_link() { echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "n"; } add_action('wp_head', 'favicon_link'); フック名 関数
  • 14. 14 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 BPのユーザー登録処理がWPと異なる そのままではメルマガ登録できない
  • 15. 15
  • 16. 16 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 BPのユーザー登録にフックする BP登録と同時にメルマガに登録
  • 17. 17
  • 19. 19 WP の処理 ユーザー登録 Subscribe2 に登録する add_aciton('register_form') は、 WP のユーザー登録にフックする add_action('register_form') do_action('register_form')
  • 20. 20 BPでのフックの場所を調べる ● WordPress ● ファイル wp-login.php ● フック register_form ● BuddyPress ● ファイル bp-themes/bp-default/registration/register.php ● フック bp_custom_profile_edit_fields ● subscribe2.php で該当箇所を書き換える add_action('register_form', array(&$this, 'register_form')); add_action('bp_custom_profile_edit_fields', array(&$this, 'register_form'));
  • 21. 21 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 add_action('bp_custom_profile_edit_fields') に変更して、BP のユーザー登録にフックする do_action('bp_custom_profile_edit_fields') add_action('bp_custom_profile_edit_fields')
  • 22. 22 プラグイン本体は改変しない ● 前述の方法はプラグイン本体を書き換える ● プラグインアップデート時に困る ● プラグイン本体は書き換えない方法 ● functions.php に書く if ( class_exists('s2class') && $mysubscribe2 instanceof s2class ) { add_action('bp_custom_profile_edit_fields', array(&$mysubscribe2, 'register_form')); }
  • 24. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 1 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 1 プラグインフックの 仕組みとカスタマイズ BuddyPressとSubscribe2 水野 史土 http://php-web.net/ mizuno
  • 25. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 2 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 2 WordPress に関する活動 ● WordBench ● 川崎、名古屋、大阪、神戸 ● オープンソースカンファレンス (OSC) ● 東京、名古屋、京都、神戸 ● 公式マニュアル (Codex) ● プラグイン配布 ● ShowID for Post/Page/Category/Tag/Comment ● Select Category to Post ワードベンチ:川崎、名古屋、大阪、神戸 ユーザー同士で交流 OSC:東京、名古屋、京都、神戸 他のCMS(Concrete5, Drupal, Geeklog, Joruri, MODx, Typo3等)やLinux、MySQL等、 ウェブを支えるコミュニティと交流 公式マニュアル ドキュメントの共有 プラグイン ShowID for Post/Page/Category/Tag/Comment Select Category to Post(公式に登録準備中)
  • 26. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 3 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 3 プラグイン ● WP にプログラムを追加(どこで?何を?) ● 追加する場所 → フック ● プログラムの中身 → PHP ● フィルターフックとアクションフック ● WP に多数用意されている ● ソースを読んでフックの箇所を調べる ● プラグイン同士の整合性に注意する ● フック箇所/中身を調べる プラグイン: どこで、何をするかを決める ワードプレス本体の機能はそれほど多くない プラグインを作ることで拡張可能 フィルターとアクションの2種類のフック 公式マニュアルの例を元に解説 プラグイン同士が競合することがある それぞれのプラグイン中身を調べておく フックする箇所に注意する
  • 27. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 4 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 4 フィルターフック ● WP の処理データを改変 ● the_title (記事タイトル) ● excerpt_length (抜粋の長さ) ● フックでプラグインが実行可能 ● add_filter(フック名, プラグイン関数) ● Codex の例: 抜粋の長さを変える ● どこで? → 抜粋 ● 何を? → 長さの変更 フィルターフックとアクションフックがある ワードプレスの処理データを変更する場合はフィル ターを使う
  • 28. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 5 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 5 WP の処理 抜粋 長さの変更 WP に apply_filters が用意されている add_filter でプラグイン登録 「抜粋の長さを変更」を実行 apply_filters('excerpt_length') add_filter 抜粋の長さを変更する ワードプレス側 apply_filters が用意されている プラグインの側 フィルターに対する処理を書く add_filter でフックする
  • 29. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 6 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 6 例: 抜粋の長さを変える function new_excerpt_length($length) { return 20; } add_filter('excerpt_length', 'new_excerpt_length'); フック名 関数 Multibyte patch 使用時は excerpt_mblength フィルターフックの例 抜粋の長さ(デフォルト55単語)を変更できる 日本語の場合(マルチバイトパッチ使用)は、 excerpt_mblength で設定する
  • 30. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 7 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 7 アクションフック ● WP の処理途中の目印 ● wp_head (header.php読込) ● comment_post (コメント投稿) ● フックでプラグインが実行可能 ● add_action(フック名, プラグイン関数) ● Codex の例: HTMLヘッダーにFavicon表示 ● どこで? → ヘッダー読込 ● 何を? → favicon 追加 アクションフックは、ワードプレスの処理の目印 フックのある箇所で、プラグイン実行 PHP で記述するので、自由度、汎用性に優れる
  • 31. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 8 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 8 WP の処理 ヘッダー読込 favicon 追加 WP に do_action が用意されている add_action でプラグイン登録 「favicon 追加」を実行 do_action('wp_head') add_action ヘッダー読込時にファビコンを追加する ワードプレス側 do_action が用意されている プラグイン側 フックでの処理を書く フックする場所を add_action で指定する
  • 32. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 9 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 9 例: ヘッダー → favicon表示 function favicon_link() { echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "n"; } add_action('wp_head', 'favicon_link'); フック名 関数 HTML ヘッダー部分に、ファビコンを表示する wp_head のところで、ヘッダー出力処理をする ワードプレス本体やテンプレートを改変しないでカ スタマイズできる
  • 33. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 10 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 10 Subscribe2 ● メルマガプラグイン ● どこで? – ユーザー登録時 ● 何を? – メルマガ登録 もちろん記事投稿-メー ル配信もある サブスクライブは、メルマガ配信プラグイン ユーザー登録時に、「メルマガ登録する?」か選択 可能 もちろん、記事投稿 → メール投稿という処理がメイ ンだが、今回取り上げるのはこちら
  • 34. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 11 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 11 WP の処理 ユーザー登録 Subscribe2 に登録する WPのユーザー登録にフックする WP登録と同時にメルマガに登録 サブスクライブは、ワードプレスのユーザー登録に フックしている ワードプレスのユーザー登録時に、「メルマガ登 録」も一緒に行うことができる
  • 35. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 12 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 12 BuddyPress ● WPをソーシャルネットワーク化 ● ワードベンチ http://wordbench.org/ ● スローフードあいち http://www.slowaichi.net/ ● 独自の関数、独自フックが多数 ● ソースは比較的綺麗 ● 独自の関数/フックは bp_ で始まる バディプレスは、ソーシャルネットワークシステム を作るためのプラグイン 利用例:ワードベンチ、スローフードあいち等 技術的な話 バディプレス独自の関数、独自のフックがたく さん用意されている ソースは綺麗(WP本体は汚い)中身を理解し やすい 独自の関数やフックは bp_ で始まる 他のプラグインと名前が被ることはまず無い
  • 36. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 13 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 13 BuddyPress と他のプラグイン ● WP用のプラグインをBPで使いたい ● BP 独自のフックがある ● そのままで動くとは限らない ● BuddyPressのフックで動かす ● BuddyPressにはフックが多く用意されている ● テンプレートファイルを調べる ● プラグインのフック箇所を書き換える バディプレスには、独自のフックがある ワードプレス用プラグインがそのまま動作するとは 限らない プラグインのフック箇所を調べて、バディプレスの フックに書き換える
  • 37. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 14 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 14 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 BPのユーザー登録処理がWPと異なる そのままではメルマガ登録できない バディプレスは独自の登録画面を用意しており、そ こからユーザー登録する サブスクライブをそのままインストールした場合、 バディプレスのユーザー登録にフックしていない ので、バディプレスの登録画面で「メルマガ登 録」を一緒にはできない 一度にできるほうが、ユーザーにとって嬉しい
  • 38. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 15 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 15
  • 39. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 16 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 16 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 BPのユーザー登録にフックする BP登録と同時にメルマガに登録 サブスクライブのフック先をバディプレスの登録画 面に変更すればOK
  • 40. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 17 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 17
  • 41. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 18 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 18 Subscribe2のソースを調べる ● メルマガ登録処理をする関数(メソッド) ● s2class->register_form ● フック先を調べる ● add_action('register_form', array(&$this, 'register_form')); プラグインのソースを調べる メルマガ登録処理をしている関数(オブジェクト指 向なので、メソッド)を調べる s2class->register_form そのメソッドがフックしている場所を調べる register_form
  • 42. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 19 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 19 WP の処理 ユーザー登録 Subscribe2 に登録する add_aciton('register_form') は、 WP のユーザー登録にフックする add_action('register_form') do_action('register_form') プラグインの初期設定 add_action('register_form') ワードプレスのユーザー登録にフックしている バディプレスのユーザー登録画面では、フック を呼び出ししない
  • 43. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 20 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 20 BPでのフックの場所を調べる ● WordPress ● ファイル wp-login.php ● フック register_form ● BuddyPress ● ファイル bp-themes/bp-default/registration/register.php ● フック bp_custom_profile_edit_fields ● subscribe2.php で該当箇所を書き換える add_action('register_form', array(&$this, 'register_form')); add_action('bp_custom_profile_edit_fields', array(&$this, 'register_form')); サブスクライブがフックしている場所をワードプレ ス、バディプレスのソースを調べて探す ワードプレスでは、wp-login.php の register_form バディプレスでは、register.php の bp_custom_profile_edit_fields サブスクライブプラグインの、フック箇所を書き換 えることで、バディプレスのユーザー登録画面に フックする
  • 44. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 21 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 21 WP の処理 ユーザー登録 Subscribe2 に登録する BP の処理 ユーザー登録 add_action('bp_custom_profile_edit_fields') に変更して、BP のユーザー登録にフックする do_action('bp_custom_profile_edit_fields') add_action('bp_custom_profile_edit_fields') サブスクライブのフック先をバディプレスの登録画 面に変更すればOK bp_custom_profile_edit_fields にフックする Subscribe2.php を書き換えれば解決する
  • 45. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 22 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 22 プラグイン本体は改変しない ● 前述の方法はプラグイン本体を書き換える ● プラグインアップデート時に困る ● プラグイン本体は書き換えない方法 ● functions.php に書く if ( class_exists('s2class') && $mysubscribe2 instanceof s2class ) { add_action('bp_custom_profile_edit_fields', array(&$mysubscribe2, 'register_form')); } プラグイン本体は書き換えないようにすると、プラ グインアップデート時に楽(大幅に仕様変更が あった時は別だが) Subscribe2 プラグインはカスタマイズしやすいよう に記述されている。オブジェクト指向で書かれて いないプラグインだと大変かもしれない。
  • 46. Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 23 Oct. 30, 2010 Mizuno WordCamp Nagoya 2010 23 参考資料&ライセンス ● Codex http://wpdocs.sourceforge.jp/ ● BuddyPress http://buddypress.org/ ● Subscribe2 http://subscribe2.wordpress.com/ ● CC-BY-SA 表示&継承 ● 誰でも自由に利用可能 公式マニュアル、プラグインのサイトの紹介 この資料のライセンス クリエイティブコモンズ表示継承 引用元を表記する 同一ライセンスにする を満たせば、誰でも自由に利用可能 ワードプレス、ブラグイン、バディプレスに興味を もった人は、自由に使ってください。