WebプログラミングV
目次へ 前へ 次へ
2013/11/26 久米
3.フックでPHPカスタマイズ
フックはプラグインで利用することが多い。
3.1 フック
- フックとは、決められたタイミングでPHP処理に割り込む仕掛けである。
- フックを使って、PHP処理のカスタマイズが可能となる。
- フックには、ActionフックとFilterフックがあるが、結局同じようなもので、
返り値を返さないか、返り値を返すかの違いだけです。
Actionフック一覧 (英語) Filterフック一覧 (英語)
3.2 フックの使用方法
Actionフック |
function 関数名(引数) {
//処理
}
add_action("フック名", "関数名", [実行順小さいほど先。デフォルト10], [引数の数デフォルト1]); |
Filterフック |
function 関数名(引数) {
//処理
return 返り値;
}
add_filter("フック名", "関数名", [実行順小さいほど先。デフォルト10], [引数の数デフォルト1]); |
注)関数名は英数文字でなんでもいいが唯一の名前である必要がある。
3.3 プラグイン作成
|
|
|
|
|
|
|
|
wp-content |
|
|
|
|
|
|
│ |
|
|
|
|
|
|
└ |
plugins |
|
|
|
|
|
|
│ |
|
|
|
|
|
|
└ |
プラグインフォルダ |
(名前はなんでも可(英数文字)) |
|
例 customize-view-22 |
|
|
|
│ |
|
|
|
|
|
|
└ |
phpファイル(名前はなんでも可(英数文字)) |
|
例 customize-view-22.php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注)プラグインフォルダ(phpファイルでも可)名は唯一の名前でないとだめ
3.4 プラグインの書き方
プラグインのphpファイル |
<?php
/*
Plugin Name: (プラグインの名前)←最低限必要な項目 例 Customize View 22
Plugin URI: (プラグインの説明と更新を示すページの URI)
Description: (プラグインの短い説明)
Version: (プラグインのバージョン番号。例: 1.0)
Author: (プラグイン作者の名前)
Author URI: (プラグイン作者の URI)
License: (ライセンス名の「スラッグ」 例: GPL2)
*/
?> |
例 the_content
プラグインのphpファイル |
<?php
/*
Plugin Name: kaomoji-daisuki
Description: 顔文字を挿入
Version: 1.0
Author: Taro Kaomoji
*/
function my_kaomoji_daisuki($content) {
return "ヽ(。・ω・)ノ".$content."ヾ(・ω・。)ノ";
}
add_filter("the_content", "my_kaomoji_daisuki");
?> |
例 wp_title
プラグインのphpファイル |
<?php
/*
Plugin Name: My Customize
Description: 自分でカスタマイズ
Version: 1.0
Author: Taro Kaomoji
*/
function my_twentythirteen_wp_title( $title, $sep ) {
remove_filter( 'wp_title', twentythirteen_wp_title);
return $title;
}
add_filter( 'wp_title', 'my_twentythirteen_wp_title', 5, 2 );
?> |
演習1 。の前に「でっせ」「だよだよ」「ヽ(≧∇≦)ノ」などを付けよ。
演習2 アクションフックadmin_noticesを利用して、管理画面にヽ(≧∇≦)ノなどを表示してみよ。
演習3 ブログタイトルの下に記述されているキャッチフレーズに
五輪まで、あと2411日ヽ(≧∇≦)ノ
のように動的に変わるキャッチフレーズを作成せよ。
ヒント1 どのフックを使うか (twentytwelveの場合)
- キャッチフレーズをプリントしている箇所は、
wp-content\themes\twentytwelve\header.phpの39行目の
<?php bloginfo( 'description' ); ?>
- function bloginfoは、
wp-includes\general-template.php 418行目
- function get_bloginfoは、上記ファイル内の 446行目
- 引数$showがdescriptionの場合は、上記ファイル内の535行目の
$output = apply_filters('bloginfo', $output, $show);
でフィルタフックすることができる。
引数$outputはデフォルトのキャッチフレーズの文字列が入っている。
引数$showは、descriptionの文字列が入っている。
ヒント2 五輪までの日数は下記計算式で計算できる。
ceil((strtotime('2020/07/24')-strtotime('now'))/(3600*24))
WordPress ウィジェット API (英語)