SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
俺 の フック が こ んなに
     ore no hook ga konna ni kantan na wakega nai.




 簡単 な わけ がない。
    WordBench KOBE #21
こんな説明みたことありませんか?

抜粋の [...] を消すには、functions.phpに以下のコードを
コピー&ペーストしましょう。

 function new_excerpt_more($more) {
       return '';
 }
 add_filter('excerpt_more',
 'new_excerpt_more');
これ、実は「フック」といいます。

抜粋の [...] を消すには、functions.phpに以下のコードを
コピー&ペーストしましょう。

 function new_excerpt_more($more) {
       return '';
 }
 add_filter('excerpt_more',
 'new_excerpt_more');
フックの中でもこれは「フィルターフック」

抜粋の [...] を消すには、functions.phpに以下のコードを
コピー&ペーストしましょう。

 function new_excerpt_more($more) {
       return '';
 }
 add_filter('excerpt_more',
 'new_excerpt_more');
今日は「フック」のしくみについてのお話。
フックには2つある。



アクションフック

フィルターフック
WordPressを料理だと
考えてみましょう
WordPressの処理は
レシピ通り作られる
料理のようなもの
バター60gを混ぜる。

砂糖60gを加える。

ふんわりするまで混ぜる。

バニラエッセンスを加える。

...
バター60gを混ぜる。
     全ての処理には順番がありますが、
         それぞれは独立しています。
砂糖60gを加える。

ふんわりするまで混ぜる。

バニラエッセンスを加える。

...
バター60gを混ぜる。

砂糖60gを加える。

ふんわりするまで混ぜる。

 溶き卵を加える。     処理を追加

バニラエッセンスを加える。

...
バター60gを混ぜる。

砂糖60gを加える。
           アクションフック
ふんわりするまで混ぜる。




                =
 溶き卵を加える。     処理を追加

バニラエッセンスを加える。

...
バター60gを混ぜる。

砂糖60gを加える。

ふんわりするまで混ぜる。

 溶き卵を加える。     どこに追加したか?

バニラエッセンスを加える。

...
バター60gを混ぜる。

砂糖60gを加える。

ふんわりするまで混ぜる。
          「ふんわりするまで
 溶き卵を加える。   混ぜた後」

バニラエッセンスを加える。

...
アクションフックを書いてみた


function 溶き卵を加える() {
}
add_action('ふんわりするまで混ぜ
た後', '溶き卵を加える');
なぜこんなめんどくさい
ことをするのか?
レシピ=ソースコードは
アップデートされる。

書き換えてしまうとあと
でどこを編集したかわから
なくなる。
カスタマイズはフックで行うのが原則。

テンプレートに書いてしまうと、テーマ
を変えた時に処理が消えてしまう。


         Web制作者はしばしばサイトのテーマは変わ
         らないものだと思うが、一応特殊な例で本来
         はユーザーが変えるもの
バター60gを混ぜる。

砂糖60gを加える。

ふんわりするまで混ぜる。

バニラエッセンスを加える。

...
バター60gを混ぜる。
        レシピの中には複数の処理に
砂糖60gを加える。共通した動作があります。


ふんわりするまで混ぜる。

バニラエッセンスを加える。

...
バター60gをよく混ぜる。
               「混ぜる」を
砂糖60gを加える。   「よく混ぜる」に
             フィルターをかけた
ふんわりするまでよく混ぜる。

バニラエッセンスを加える。

...
バター60gをよく混ぜる。
               「混ぜる」を
砂糖60gを加える。   「よく混ぜる」に
             フィルターをかけた
ふんわりするまでよく混ぜる。




                =
           フィルターフック
バニラエッセンスを加える。

...
フィルターフックを書いてみた

function 混ぜるによくを足す
($text) {
  return ‘よく’ . $text;
}
add_filter('混ぜる', '混ぜるに
よくを足す');
バター60gをよく混ぜる。
          「砂糖60gを加える」
            を処理しない

ふんわりするまでよく混ぜる。

バニラエッセンスを加える。

...
バター60gをよく混ぜる。
          「砂糖60gを加える」
            を処理しない

ふんわりするまでよく混ぜる。




                =
         これもフィルターフック
バニラエッセンスを加える。

...
フィルターフックを書いてみた


function やめておく() {
  return false;
}
add_filter('砂糖を加えるかどう
か', 'やめておく');
アクションフックのおさらい

function 溶き卵を加える() {
}
add_action('ふんわりするまで混ぜ
た後', '溶き卵を加える');

あくまで処理の追加。
フィルターフックのおさらい

function 混ぜるによくを足す
($text) {
  return ‘よく’ . $text;
}
add_filter('混ぜる', '混ぜるに
よくを足す');

あくまで既存の処理の変更。
アクションフックは基本的に
既存の処理の変更はできない。
フィルターフックは基本的に処理自体を
追加することはできない。
ただし、例外…


グローバル変数を使えばアクションフィ
ルターでも既存の処理の結果を変更した
りフィルターすることができる。

 グローバル変数 = テーマやプラグインをまたいで
 WordPressの処理中で共通で使用できる変数
 $post, $wp_query, $wp_rewrite など

 一応、変数を渡してフィルターのようにも使えてしまう…(ややこしい)
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');


         フィルターフックの登録
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');

          フィルターを実行する
              関数名
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');

          フィルターを実行する
              関数
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');


         何らかの値を受け取って…
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');


          空の文字列を返している
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');

                 この $more は
                何に使われてるの…
ソースを読むしかない!
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');


         フックを登録する処理名
冒頭のコードをもういちど見てみましょう

function new_excerpt_more($more) {
      return '';
}
add_filter('excerpt_more',
'new_excerpt_more');

     apply_filters('excerpt_more'
      でソースコードを検索!
該当部分のコード
function wp_trim_excerpt($text = '') {
 $raw_excerpt = $text;
 if ( '' == $text ) {
  $text = get_the_content('');
  $text = strip_shortcodes( $text );
  $text = apply_filters('the_content', $text);
  $text = str_replace(']]>', ']]>', $text);
  $excerpt_length = apply_filters('excerpt_length', 55);
  $excerpt_more = apply_filters('excerpt_more', ' ' .
'[...]');
  $text = wp_trim_words( $text, $excerpt_length,
$excerpt_more );
 }
 return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
                               wp-includes/formatting.php
該当部分のコード
function wp_trim_excerpt($text = '') {
 $raw_excerpt = $text;
     apply_filters() フィルターをかける
 if ( '' == $text ) {
  $text = get_the_content('');
  $text = strip_shortcodes( $text );
  $text = apply_filters('the_content', $text);
  $text = str_replace(']]>', ']]>', $text);
  $excerpt_length = apply_filters('excerpt_length', 55);
  $excerpt_more = apply_filters('excerpt_more', ' ' .
'[...]');
  $text = wp_trim_words( $text, $excerpt_length,
$excerpt_more );
 }
 return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
該当部分のコード
function wp_trim_excerpt($text = '') {
 $raw_excerpt = $text;
      先ほどの $more の中身が判明。
 if ( '' == $text ) {
       半角スペース + [...] だった。
  $text = get_the_content('');
  $text = strip_shortcodes( $text );
  $text = apply_filters('the_content', $text);
  $text = str_replace(']]>', ']]>', $text);
  $excerpt_length = apply_filters('excerpt_length', 55);
  $excerpt_more = apply_filters('excerpt_more', ' ' .
'[...]');
  $text = wp_trim_words( $text, $excerpt_length,
$excerpt_more );
 }
 return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
さらに実践編。
WordPressのカテゴリーウィジェット
並び順を変えたいなぁ…
ウィジェットのUIには並び順がない…
さてここで質問。
カテゴリーウィジェットが表示する
カテゴリーの並び順を変えたい。
これはアクションフック?
フィルターフック?
/**
 * Categories widget class
 *                                    該当部分のコード
 * @since 2.8.0
 */
class WP_Widget_Categories extends WP_Widget {
...
! ! $cat_args = array('orderby' => 'name', 'show_count' => $c,
'hierarchical' => $h);
...
! ! <ul>
<?php
! ! $cat_args['title_li'] = '';
! ! wp_list_categories(apply_filters('widget_categories_args',
$cat_args));
?>
! ! </ul>
...
                           wp-includes/default-widget.php
/**
 * Categories widget class
 *                                    該当部分のコード
 * @since 2.8.0
 */
class WP_Widget_Categories extends WP_Widget {
...
         wp_list_categories() 関数で
! ! $cat_args = array('orderby' => 'name', 'show_count' => $c,
'hierarchical' => $h);
...   カテゴリーの一覧を出力してるようだ。
! ! <ul>
<?php
! ! $cat_args['title_li'] = '';
! ! wp_list_categories(apply_filters('widget_categories_args',
$cat_args));
?>
! ! </ul>
...
/**
 * Categories widget class
 *                                    該当部分のコード
 * @since 2.8.0
 */
class WP_Widget_Categories extends WP_Widget {
...               オプション値 $cat_args に
                  フィルターを通してある!
! ! $cat_args = array('orderby' => 'name', 'show_count' => $c,
'hierarchical' => $h);
...              これで並び順も変更できそう。
! ! <ul>
<?php
! ! $cat_args['title_li'] = '';
! ! wp_list_categories(apply_filters('widget_categories_args',
$cat_args));
?>
! ! </ul>
...
/**
 * Categories widget class
 *                                    該当部分のコード
 * @since 2.8.0
 */
class WP_Widget_Categories extends WP_Widget {
...
! ! $cat_args = array('orderby' => 'name', 'show_count' => $c,
'hierarchical' => $h);
...
! ! <ul>
<?php
              オプション値 $cat_args は
                配列なんだな。
! ! $cat_args['title_li'] = '';

            並び順は名前順になっているな。
! ! wp_list_categories(apply_filters('widget_categories_args',
$cat_args));
?>
! ! </ul>
...
/**
 * Categories widget class
 *                                    該当部分のコード
 * @since 2.8.0
 */
class WP_Widget_Categories extends WP_Widget {
...
                       フィルター名は
! ! $cat_args = array('orderby' => 'name', 'show_count' => $c,
                 「widget_categories_args」か。
'hierarchical' => $h);
...
! ! <ul>
<?php
! ! $cat_args['title_li'] = '';
! ! wp_list_categories(apply_filters('widget_categories_args',
$cat_args));
?>
! ! </ul>
...
FUNCTIONS.PHPに記載するコード
function change_widget_category_orderby( $cat_args )
{
    $cat_args['orderby'] = 'count';
    $cat_args['order'] = 'DESC';
    return $cat_args;
}
add_filter( 'widget_categories_args',
'change_widget_category_orderby' );
FUNCTIONS.PHPに記載するコード
function change_widget_category_orderby( $cat_args )
{
    $cat_args['orderby'] = 'count';
    $cat_args['order'] = 'DESC';
             wp_list_categories()の
    return $cat_args;
}
          オプション値を配列で受け取って…
add_filter( 'widget_categories_args',
'change_widget_category_orderby' );

                      ↑
              これがソースを読まないと分からない
FUNCTIONS.PHPに記載するコード
function change_widget_category_orderby( $cat_args )
{
    $cat_args['orderby'] = 'count';
    $cat_args['order'] = 'DESC';
    return $cat_args;
}                 変更したいオプション値を
                      設定して…
add_filter( 'widget_categories_args',
'change_widget_category_orderby' );
                           ↑
                こっちはCodexのwp_list_categoriesの
                  ページを見ないと分からない
FUNCTIONS.PHPに記載するコード
function change_widget_category_orderby( $cat_args )
{
    $cat_args['orderby'] = 'count';
    $cat_args['order'] = 'DESC';
    return $cat_args;                  返す
}
add_filter( 'widget_categories_args',
'change_widget_category_orderby' );
できた!




カテゴリーの
 投稿数順
   &
  降順
このように、フィルターフックは
フィルターされる値が何で
どのように使われるのかは、
フックによって異なるし、
ソースを見ないと分からない。
さらに、アクションフックは
WordPressがどんな順番で
何を処理しているのか、
ある程度わかってないと
どこにフックしていいのか
分からない。
え?結局
難しいじゃないかって…?


               ?
俺 の フック は そ んなに
 簡単 な わけ がない。
アクションフックとフィルターフックの
違い、基本的な考え方を知っておけば
そんなに怖くないよ!


     フィルターフックには
     Debug Bar Extender プラグインの
     Variable Lookup 機能が便利
     http://wordpress.org/extend/plugins/debug-bar-extender/
フックに関するブログを色々アップしてます。
フィルターフック:カスタムメニューの項目に付与されるクラスをカスタマイズする
http://notnil-creative.com/blog/archives/1615

フィルターフック:検索結果で投稿タイプごとに違うテンプレートファイルを使う
http://notnil-creative.com/blog/archives/1566

アクションフック:テーマからJavascriptやCSSを読み込む書き方まとめ
http://notnil-creative.com/blog/archives/1299

アクションフック:ツールバーをカスタマイズする
http://notnil-creative.com/blog/archives/1163

アクションフック:パンくずナビゲーション(Breadcrumb NavXT)をカスタマイズする
http://notnil-creative.com/blog/archives/981

フィルターフック:ギャラリーをカスタマイズして好きなjQueryプラグインを使う
http://notnil-creative.com/blog/archives/969
Thanks!

Contenu connexe

Tendances

MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
LINE Corporation
 

Tendances (20)

PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
高負荷に耐えうるWebApplication Serverの作り方
高負荷に耐えうるWebApplication Serverの作り方高負荷に耐えうるWebApplication Serverの作り方
高負荷に耐えうるWebApplication Serverの作り方
 
What's new in Spring Batch 5
What's new in Spring Batch 5What's new in Spring Batch 5
What's new in Spring Batch 5
 
GitLab Premium 라이선스 기능소개 - 인포그랩
GitLab Premium 라이선스 기능소개 - 인포그랩GitLab Premium 라이선스 기능소개 - 인포그랩
GitLab Premium 라이선스 기능소개 - 인포그랩
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
 
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
คำสั่งในการวนรอบการทำงาน Vb2010 (1)
คำสั่งในการวนรอบการทำงาน Vb2010 (1)คำสั่งในการวนรอบการทำงาน Vb2010 (1)
คำสั่งในการวนรอบการทำงาน Vb2010 (1)
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
3
33
3
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
Micrometerでメトリクスを収集してAmazon CloudWatchで可視化
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
Django の認証処理実装パターン / Django Authentication Patterns
Django の認証処理実装パターン / Django Authentication PatternsDjango の認証処理実装パターン / Django Authentication Patterns
Django の認証処理実装パターン / Django Authentication Patterns
 

En vedette

もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
 
Scramble1
Scramble1Scramble1
Scramble1
lmielke
 
Perwil kelompok
Perwil kelompokPerwil kelompok
Perwil kelompok
franqpunk
 
Maria lauer what a wonderfull_world_la
Maria lauer what a wonderfull_world_laMaria lauer what a wonderfull_world_la
Maria lauer what a wonderfull_world_la
DrMaria2011
 
世界再大也要回家
世界再大也要回家世界再大也要回家
世界再大也要回家
政瑜 王
 
Eaindray's Tea Shop Photo Essay
Eaindray's Tea Shop Photo EssayEaindray's Tea Shop Photo Essay
Eaindray's Tea Shop Photo Essay
ISYGrade6
 
Air Car - Ad Design 2010, Patel Hall
Air Car - Ad Design 2010, Patel HallAir Car - Ad Design 2010, Patel Hall
Air Car - Ad Design 2010, Patel Hall
somnathmeher
 

En vedette (20)

WordBench 東京 とは
WordBench 東京 とはWordBench 東京 とは
WordBench 東京 とは
 
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
ノンプログラマーのためのWordPressプラグイン開発超入門v1.0
 
ノンプログラマーのためのカンタンWordPressテーマ作成入門 ∼子テーマで WordPress のテーマをつくろう∼
ノンプログラマーのためのカンタンWordPressテーマ作成入門 ∼子テーマで WordPress のテーマをつくろう∼ノンプログラマーのためのカンタンWordPressテーマ作成入門 ∼子テーマで WordPress のテーマをつくろう∼
ノンプログラマーのためのカンタンWordPressテーマ作成入門 ∼子テーマで WordPress のテーマをつくろう∼
 
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
ノンプログラマーのためのカンタンWordPressテーマ作成入門 〜子テーマでテーマ作成&カスタマイズ〜
 
ノンプログラマーのためのWordPressテーマ作成ステップアップ術
ノンプログラマーのためのWordPressテーマ作成ステップアップ術ノンプログラマーのためのWordPressテーマ作成ステップアップ術
ノンプログラマーのためのWordPressテーマ作成ステップアップ術
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
concrete5 in Japan 2014
concrete5 in Japan 2014concrete5 in Japan 2014
concrete5 in Japan 2014
 
Show bai tan go cho em
Show bai tan go cho emShow bai tan go cho em
Show bai tan go cho em
 
Scramble1
Scramble1Scramble1
Scramble1
 
Deadspace pdf
Deadspace pdfDeadspace pdf
Deadspace pdf
 
Perwil kelompok
Perwil kelompokPerwil kelompok
Perwil kelompok
 
Maria lauer what a wonderfull_world_la
Maria lauer what a wonderfull_world_laMaria lauer what a wonderfull_world_la
Maria lauer what a wonderfull_world_la
 
Introduction
IntroductionIntroduction
Introduction
 
世界再大也要回家
世界再大也要回家世界再大也要回家
世界再大也要回家
 
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
Kisi kisi materi tajuk subyek keislaman (TSI-PII-2010-UINSUKA)
 
Lot’s wife
Lot’s wifeLot’s wife
Lot’s wife
 
Eaindray's Tea Shop Photo Essay
Eaindray's Tea Shop Photo EssayEaindray's Tea Shop Photo Essay
Eaindray's Tea Shop Photo Essay
 
Air Car - Ad Design 2010, Patel Hall
Air Car - Ad Design 2010, Patel HallAir Car - Ad Design 2010, Patel Hall
Air Car - Ad Design 2010, Patel Hall
 

Similaire à 俺のフックがこんなに簡単なわけがない。

Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable TypeMTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
Yujiro Araki
 
WordBech Osaka No.28
WordBech Osaka No.28WordBech Osaka No.28
WordBech Osaka No.28
Kite Koga
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
純生 野田
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623
Miho Ishida
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
co-hey japan
 

Similaire à 俺のフックがこんなに簡単なわけがない。 (20)

Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構
 
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable TypeMTDDC Meetup Tokyo 2011:もっとディープにMovable Type
MTDDC Meetup Tokyo 2011:もっとディープにMovable Type
 
WordBech Osaka No.28
WordBech Osaka No.28WordBech Osaka No.28
WordBech Osaka No.28
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニックWordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
WordPressでオリジナルサイトを作るための最初の一歩的なカスタマイズテクニック
 
MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
Ci tutorial
Ci tutorialCi tutorial
Ci tutorial
 
Wb osaka 20120623
Wb osaka 20120623Wb osaka 20120623
Wb osaka 20120623
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
 
WordBeach @kurudrive
WordBeach @kurudriveWordBeach @kurudrive
WordBeach @kurudrive
 
SaCSS vol.24
SaCSS vol.24SaCSS vol.24
SaCSS vol.24
 

Plus de Hishikawa Takuro

Plus de Hishikawa Takuro (20)

これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!
これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!
これから concrete5 を始める Web 制作者に伝えたい concrete5 と WordPress ここが一緒、ここが違う!
 
エンジニアのための営業入門
エンジニアのための営業入門エンジニアのための営業入門
エンジニアのための営業入門
 
concrete5 CMS「運用」ケーススタディ
concrete5 CMS「運用」ケーススタディconcrete5 CMS「運用」ケーススタディ
concrete5 CMS「運用」ケーススタディ
 
Calypso動かしてみたよ!
Calypso動かしてみたよ!Calypso動かしてみたよ!
Calypso動かしてみたよ!
 
concrete5の紹介
concrete5の紹介concrete5の紹介
concrete5の紹介
 
concrete5 最新事情 2015
concrete5 最新事情 2015concrete5 最新事情 2015
concrete5 最新事情 2015
 
concrete5セミナー資料公開版
concrete5セミナー資料公開版concrete5セミナー資料公開版
concrete5セミナー資料公開版
 
WordPress使いのためのconcrete5入門
WordPress使いのためのconcrete5入門WordPress使いのためのconcrete5入門
WordPress使いのためのconcrete5入門
 
concrete5で行なうcms導入提案のポイント
concrete5で行なうcms導入提案のポイントconcrete5で行なうcms導入提案のポイント
concrete5で行なうcms導入提案のポイント
 
concrete5.7のご紹介
concrete5.7のご紹介concrete5.7のご紹介
concrete5.7のご紹介
 
世界一即戦力なCMS
世界一即戦力なCMS世界一即戦力なCMS
世界一即戦力なCMS
 
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイドはじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド
はじめての concrete5 でウェブサイト作成〜入門チュートリアルガイド
 
CMS導入で企業のWebサイト運営はこう変わる!
CMS導入で企業のWebサイト運営はこう変わる!CMS導入で企業のWebサイト運営はこう変わる!
CMS導入で企業のWebサイト運営はこう変わる!
 
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法
オープンソースCMSに学ぶ、前PSR時代のプロジェクトが脱レガシーする5つの方法
 
Getting Started with WordPress JSON REST API
Getting Started with WordPress JSON REST APIGetting Started with WordPress JSON REST API
Getting Started with WordPress JSON REST API
 
concrete5
 バージョン5.7のご紹介
concrete5
 バージョン5.7のご紹介concrete5
 バージョン5.7のご紹介
concrete5
 バージョン5.7のご紹介
 
クライアントに感謝されるCMS導入のコツ
クライアントに感謝されるCMS導入のコツクライアントに感謝されるCMS導入のコツ
クライアントに感謝されるCMS導入のコツ
 
concrete5 5.6.3.1日本語版の紹介
concrete5 5.6.3.1日本語版の紹介concrete5 5.6.3.1日本語版の紹介
concrete5 5.6.3.1日本語版の紹介
 
concrete5デザインカスタマイズに必要なPHPの知識
concrete5デザインカスタマイズに必要なPHPの知識concrete5デザインカスタマイズに必要なPHPの知識
concrete5デザインカスタマイズに必要なPHPの知識
 
concrete5って何?〜Web制作者対象〜2014年版
concrete5って何?〜Web制作者対象〜2014年版concrete5って何?〜Web制作者対象〜2014年版
concrete5って何?〜Web制作者対象〜2014年版
 

俺のフックがこんなに簡単なわけがない。