2012-08-27 6 views
5

私は、ヘッダーが送信される前に何かをすることに依存する私のテーマに機能を構築しようとしています。Initフックのフロントエンド専用バージョンですか?

add_action('init', 'my_function'); 

をしかし、問題は、私は唯一のユーザーは、管理セクションまたはログインページを見ていない場合は、my_functionを実行したいということです。だから、当然私はそうのような初期のフックにフック。

どのようなフックを使うことができるのはフロントエンドだけですが、ヘッダーが送信される前に実行されます。 Looking at the API referenceでは、何も表示されていないようであり、明らかに条件付きのものは実行時の早い段階では機能しません。

/wp-admin /と/ wp-login /のURLを検索する以外には(私にとっては大変だと思いますが)わかりません。

答えて

2

ここで私はそれをやっています。 wpアクションフックを使用すると、クエリにアクセスするのに十分遅く、条件にもアクセスできますが、テンプレートが設定される前にも発生します。

<?php 
function my_function() { 
    if (! is_admin() && ! is_login_page()) { 
     // Enqueue scripts, do theme magic, etc. 
    } 
} 

add_action('wp', 'my_function'); 

function is_login_page() { 
    return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); 
} 

編集:私はあなたがヘッダによってどのような意味を誤解(私は最近のコーディングについてwp_head ...あまりにも多くのテーマを考えていました!)。私は今あなたがsend_headersアクションを破っしようとしていると仮定しています:

function my_function() { 
    if ('index.php' == $GLOBALS['pagenow']) { 
     // Pre-header processing on the front-end 
    } 
} 

add_action('wp_loaded', 'my_function'); 

それは、スーパーエレガントではありませんが、少なくともそれは簡潔です。そして、いつも良いニュースであるit seems likely it will continue to work

+0

WPはヘッダーが送信された後に呼び出されるため、私がしようとしているものでは機能しません。 –

6

同様if(!is_admin()){}

にあなたの行動のフックと機能をアップラップので:ここ

if(!is_admin()) { 
    //Style 
    add_action('init', 'style'); 

    function style() 
    { 
     wp_enqueue_style('style', THEMEROOT . '/css/your.css'); 
    } 
} 
1

はあなたのすべてがそれを好き願っています、いくつかの罰金とクールなソリューションです。

function my_func(){ 
if (!is_admin()) 
{ 

// add code here for show only in front-end or create another function outside this block and call that function here. 
} 
else 
{ 
// add code here for show only in admin or create another function outside this block and call that function here. 
}}add_action ('init', 'my_func'); 

これはすべて、使用して、魔法を参照してください。

関連する問題