WebプログラミングV

 目次へ 前へ 次へ

2013/11/26 久米

3.フックでPHPカスタマイズ

フックはプラグインで利用することが多い。

3.1 フック

  1. フックとは、決められたタイミングでPHP処理に割り込む仕掛けである。
  2. フックを使って、PHP処理のカスタマイズが可能となる。
  3. フックには、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の場合)

  1. キャッチフレーズをプリントしている箇所は、
    wp-content\themes\twentytwelve\header.phpの39行目の
    <?php bloginfo( 'description' ); ?>
  2. function bloginfoは、
    wp-includes\general-template.php 418行目
  3. function get_bloginfoは、上記ファイル内の 446行目
  4. 引数$showがdescriptionの場合は、上記ファイル内の535行目の
    $output = apply_filters('bloginfo', $output, $show);
    でフィルタフックすることができる。

    引数$outputはデフォルトのキャッチフレーズの文字列が入っている。
    引数$showは、descriptionの文字列が入っている。

ヒント2 五輪までの日数は下記計算式で計算できる。

ceil((strtotime('2020/07/24')-strtotime('now'))/(3600*24))

 

WordPress ウィジェット API (英語