質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.09%

add_filter,apply_filter周りの質問

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 858

tuckQ

score 64

Wordpressのadd_filter、apply_filter周りの勉強をしております。

以下のソースコードにapply_filterが出てきますが、第一引数の「get_comment_author」が
自身が記述されている関数のような気がするんですが、この場合は、get_comment_author関数に第二引数以降の引数を渡して処理することになるのでしょうか?

それともどこか別の場所にadd_filter('get_comment_author',hoge)のような記述があり、そちらに引数を渡す処理になるのでしょうか?

function get_comment_author( $comment_ID = 0 ) {
    $comment = get_comment( $comment_ID );

    if ( empty( $comment->comment_author ) ) {
        if ( $comment->user_id && $user = get_userdata( $comment->user_id ) )
            $author = $user->display_name;
        else
            $author = __('Anonymous');
    } else {
        $author = $comment->comment_author;
    }

    /**
     * Filters the returned comment author name.
     *
     * @since 1.5.0
     * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
     *
     * @param string     $author     The comment author's username.
     * @param int        $comment_ID The comment ID.
     * @param WP_Comment $comment    The comment object.
     */
    return apply_filters( 'get_comment_author', $author, $comment->comment_ID, $comment );
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

第一引数の「get_comment_author」が自身が記述されている関数のような気がするんですが、この場合は、get_comment_author関数に第二引数以降の引数を渡して処理することになるのでしょうか?

違います。

第一引数はフィルターフック名です。そのフックに登録(add_filter)された関数を実行して第二引数を返します。関数名と同じフック名が同じなのは、処理のイメージがしやすいからかではないかと思います。

【関数リファレンス/apply filters - WordPress Codex 日本語版】
http://wpdocs.osdn.jp/関数リファレンス/apply_filters


追記:

【WordPressをカスタマイズするなら覚えておきたいアクションフックとフィルターフック】
http://webdesignrecipes.com/wordpress-action-hook-and-filter-hook/

【WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方 | 株式会社LIG】
https://liginc.co.jp/web/wp/customize/92030

【WordPress アクションフックとフィルターフック概論 | hijiriworld Web】
http://hijiriworld.com/web/wordpress-action-filter/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/09/25 23:34

    いつもアドバイスいただきありがとうございます。関数名とフック名が一緒なので、混乱してしまいましたが、やはりadd_filterで登録された関数を呼びだすのですね。では、add_filter( 'get_comment_author', 独自関数, ...)はどこに記述されているのだろう?という疑問が湧き、いろいろ探してみたのですが記述が見つけられず、完全な理解に到れておりません。。。WordPress Codex 日本語版の「プラグイン API/フィルターフック一覧」に「get_comment_author」の記載があるのですが、この辺と関係があるのでしょうか?

    キャンセル

  • 2016/09/25 23:59

    add_filter と apply_filters は一対で存在するのではなく、書き換える必要が出た際に add_filter で処理できるようにするための機構です。なので使用されていない apply_filters も当然あります。(その場合は第二引数がそのまま返るだけ)

    プラグインやテンプレートから処理を変更したいときに使う、とでも考えればわかりやすいかなと思います。フィルタの説明をしている記事を後で追記しておきます。

    キャンセル

  • 2016/09/26 23:03

    もともと、add_filter で登録されているフックを apply_filtersで有効化するものというイメージを持っていましたが、動作としてはむしろ逆のイメージなんですね。「1対ではなく、使用されていないapply_filtersもある」というご説明もあり、ようやく理解ができました。追記頂いた記事も参考になりました。上記のような勘違いでハマってしまっていたので、教えて頂かないとずっと立ち往生していたと思います、分かりやすく教えて頂きありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる