it-swarm-ja.com

2つの異なるフックで同じ条件が機能しない

みんな!私はWPに不慣れで、プラグインを構築しようとしています。私は以下のコードが正しく機能している:

add_filter('the_content', 'say_hello');
function say_hello($content){
    if(is_single() || is_page()){
        print $content." Thank you for reading!";
    } else {
        print $content;
    }
}

しかし、次のコードはうまくいかないようです。

add_action('init', 'prepare_head');
function prepare_head(){
    if(is_single() || is_page()){
        // include javascripts
        wp_enqueue_script("jquery");
        //some more js goes here (registered and enqueued)... 

        //include css
        $styleSrc = plugins_url("css/style.css", __FILE__);
        wp_register_style("say_hello_style", $styleSrc);
        wp_enqueue_style("say_hello_style");
    }
}

私はそれを間違っていますか?手助けは大歓迎です!ありがとうございます。

1
abhisek

init条件付きタグ には早すぎます。代わりにtemplate_redirectを使用してください。それらが実行される順序を見るために アクションリファレンス を見てください。

2
Milo

WordPressが提供する コンディショナルタグ は、template_redirectフック以降でのみ使用できます。 initは時期尚早です。 the_contentフィルタは後で発生し、コンディショナルタグを使用できます。あなたがWordPressプラグインに慣れていないので、WordPressコアがどのようにロードするかについての Rarstのグラフィカルな 説明を見てください。それはこの種の問題を解決するのに役立ちます。

2
tollmanz