8

ヘッダーが送信される前に何かを行うことに依存する機能をテーマに構築しようとしています。当然のことながら、次のように Init フックにフックしました。

add_action('init', 'my_function');

しかし、問題は、ユーザーが管理セクションまたはログイン ページを見ていない場合にのみ my_function を実行したいということです。

したがって、フロントエンドのみであるが、ヘッダーが送信される前に実行されるフックを使用できます。API リファレンス を見ると、何もないように見えます。また、明らかに条件はランタイムの早い段階で機能しません。

そのため、/wp-admin/ と /wp-login/ の URL を検索する以外に (これは私には不格好に思えます)、わかりません。

4

4 に答える 4

8

アクションのフックと関数をif(!is_admin()){}

そのようです :

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

  function style()
  {
      wp_enqueue_style('style', THEMEROOT . '/css/your.css');
  }
}
于 2014-04-15T23:29:46.240 に答える
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' );

超エレガントではありませんが、少なくとも簡潔です。そして、それは機能し続ける可能性が高いようです, これは常に良いニュースです.

于 2012-08-31T18:07:11.787 に答える
1

here is some fine and cool solution, hope you all will like it.

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');

that is all , use and see the magic.

于 2014-06-08T09:06:42.963 に答える