サポート » 使い方全般 » アクションフックの具体的な記述場所について

  • 解決済 sarrry

    (@sarrry)


    先日質問させて頂きました PHP初心者の sarrryと申します。

    度々の質問で申し訳ありませんm(_ _)m

    do_action() で指定されているアクションフック名から、実際のアクション内容を記述された部分を見つけることができずにおります。

    ◆状況:
    この度、Wordpressを使ったWebサイトの構築をする事になり、Wordpressの最新バージョンに、他社が出しているデザインテーマをインストールした状態で触っています。

    <?php bizz_slider_after(); ?> という記述から、この関数が何をしているのかを知りたいと思い、

    1)bizz_slider_after で検索
    2)function bizz_slider_after() という関数記述部分を見つける
    3)中を見ると、do_action( ‘bizz_slider_after’ ); の一行のみ

    do_action の中の引数はアクションフック名=どんな動きをするかを指定している、というような事までは分かったのですが、プロジェクト内ファイルをアクションフック名を検索しても、該当がないために行き詰っています(_ _;)

    例えば、bizz_slider_after なので、hooksフォルダのslider.php や、slider_after.php のような物があるのでは?など、あたりをつけてみたのですが、これというものを見つけられずにいます。

    ◆質問:
    指定したアクションフック名が指す動きは、どこに記述されているものなのでしょうか?

    PHPの基本なのか、Wordpressの基本なのかもわからない状態で、このようなご質問をさせて頂き恐縮ですが、先輩方のアドバイスが頂けないかと思いご連絡をさせて頂きました。

    ちなみに、使用したテーマは、こちらの inuit types というものです。
    http://theme.wordpress.com/retired/inuit-types/

    ご教示いただけますと幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 確認したところどうやらそれを使用したフックは使用されていないようですね。

    これがどういう事かと言うと「ユーザーカスタマイズ用フック」と言うことでは無いでしょうか。

    アクションフックは便宜上用意されている物も数多く存在します。使われているとは限らないのです。とは言っても不要なところにわざわざ用意する必要はないのでよく使う部分、ともいえるかもしれませんね。

    (Free版での確認です。有料版では使用されているとかあったらすみません。)

    こんにちは、

    テーマを具体的に確認したわけではありませんが

    テンプレートファイル上に記載されている

    do_action( 'bizz_slider_after' );

    等のdo_actionは、Hinaloeさんがおっしゃる通り「ユーザーカスタマイズ用フック」だと思います。

    多くのテーマでは、対応した add_action() が使われていることは、稀です。

    (独自の関数を、テンプレートに書いて、関数内でdo_actionする方が自然だと思うので )

    フック名から、想像すると、スライダーの後ろなので、例えばパンくずリストのプラグインとか、テキストのようなものを、その場所に出力させるといった用途だと思います。

    例えば、bizz_slider_after なので、hooksフォルダのslider.php や、slider_after.php のような物があるのでは?など、あたりをつけてみたのですが、これというものを見つけられずにいます。

    独自に配布されているテーマの場合、逆に何等かのadd_action()されているようですと、何かを偽装している事を疑ってみたほうがいいくらいです。

    add_action('bizz_slider_after','my_text');
    
    function my_text(){
    echo 'hello world';
    }

    な、感じで、実際にやってみると便利さがわかると思います。

    何にフックされているか調べるときは、下のような感じで関数を自作しておくと便利ですよ。
    フィルタの例:

    <?php
    function list_hooked_functions($tag=false){
        global $wp_filter;
        if ($tag) {
    
            $hook[$tag]=$wp_filter[$tag];
    
            if (!is_array($hook[$tag]) ) {
                echo "<p>Nothing found for '$tag' hook</p>";
                trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
                return;
            }
        } else {
    
            $hook=$wp_filter;
            ksort($hook);
        }
         echo '<div style="text-align:left;margin:5%;">';
    
         foreach($hook as $tag=> $priority){
             echo "<p><strong>$tag</strong></p>";
             ksort($priority);
    
             foreach($priority as $priority=> $function){
    
                 echo '<p>'.$priority.'  ';
                 foreach($function as $name=> $properties) echo "\t$name</p>";
             }
         }
    
         echo '</div>';
        return;
    }
    list_hooked_functions('the_content');
    ?>

    トピック投稿者 sarrry

    (@sarrry)

    Hinaloe様、nobita様

    ご回答頂きありがとうございました。

    チェック用のコード、ありがとうございます!
    非常に助かりました。>nobita様

    拙い質問にも丁寧にお答え頂き、ありがとうございました。

    今後ともよろしくお願い致しますmm

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「アクションフックの具体的な記述場所について」には新たに返信することはできません。