web-dev-qa-db-ja.com

Home.phpかどうかを確認し、home.phpをpage_on_frontに設定します。

ホームページにのみカスタムインラインjsを含めたい。閲覧部からホームページを設定していません。私はhome.phpファイルを使っています。

function print_my_inline_script() {    
   if (is_home() && wp_script_is( 'jquery', 'done' ) ) {
      ?>
      <script type="text/javascript">
        jQuery(document).ready(function($){ 
            $('.carousel').carousel();
            $('.item').hover(function(e){
                $(this).find('.summary').stop().fadeTo('fast',1); 
            },function(){
                $(this).find('.summary').stop().fadeOut('fast'); 
            });
        });
      </script>
      <?php
  }
}
add_action( 'wp_footer', 'print_my_inline_script' ); 

これはうまくいきません。 is_front_page()も動作しません。

私はすでにループの後に<?php wp_reset_query(); ?>をしました。

もう1つ質問があります。 home.pageがindex.phpをオーバーライドしてホームページとして機能することを私は知っています。しかし、readingセクションのオプションを変更したときにユーザーが混乱したくないと思います。

私はこれを見つけました、

update_option( 'page_on_front', $post->ID );
update_option( 'show_on_front', 'page' );

しかし、それはIDを必要とし、私はどんなページも持っていないので、私はどんなIDも持っていません。

だから、私はユーザーがhome.php(home page)にいるかどうかcheckを設定する方法が必要です、そしてhome.phpを使うことは読書セクションオプションをオーバーライドするので、それに対する何か回避策は?

1
Jashwant

創刊:

ホームページにのみカスタムインラインjsを含めたい。閲覧部からホームページを設定していません。私はhome.phpファイルを使っています。

ホームページとは、実際にはサイトフロントページを意味します。その場合、サイトにいるかどうかにかかわらず、ブログ投稿インデックスに適用されるので、is_home()またはhome.phpについてはあまり気にしないでくださいページまたは他のページ。

また見なさい:

もう1つ質問があります。 home.pageがindex.phpをオーバーライドし、ホームページとして機能することを私は知っています。しかし、私は彼らが読書セクションのオプションを変更するときに私のユーザーが混乱したくないようにします。

繰り返しますが、ここでの混乱はホームページサイトフロントページブログ投稿インデックスとみなします。さらなる説明については、 サイトフロントページ表示用のテンプレート階層 を参照してください。

スクリプトをエンキューするための正しい条件を選択した場合、ユーザー読み取り設定は影響を与えません。

第二号:

これはあなたのコールバックでは条件付きです:

if ( is_home() && wp_script_is( 'jquery', 'done' ) )
  1. is_home()サイトのフロントページをターゲットにする場合はis_front_page()を使用する必要があります
  2. wp_script_is( 'jquery', 'done' ):これは不要のようです。 依存関係としてスクリプトをjqueryに登録するだけです

第三号:

私はこれを見つけました、

update_option( 'page_on_front', $post->ID );
update_option( 'show_on_front', 'page' );

しかし、それはIDを必要とし、私はどんなページも持っていないので、私はどんなIDも持っていません。

だから、私はユーザーがhome.php(ホームページ)にいるかどうかをチェックを設定する方法が必要であり、home.phpを使用すると読書セクションのオプションをオーバーライドするので、それに対する任意の回避策?

これは本質的に_doing_it_wrong()です。ユーザー設定を上書きする必要はありません。正しい条件を選ぶだけです:

  1. サイトのフロントページをターゲティングするには、is_front_page()を使用します。
  2. サイトのフロントページ静的ページが表示されていることを確認するには、'page' == get_option( 'show_on_front' )を使用します。
  3. フロントページが静的ページを表示するように設定されている場合、ユーザーはを使用するための静的ページを作成して割り当てます。そのページのIDを確認するには、get_option( 'page_on_front' )を使用します。

すべてを一緒に入れて

  1. スクリプトをThemeディレクトリのどこかにあるcustom.jsファイルに追加します。
  2. wp_enqueue_scripts()にフックされたコールバックを追加します:

    add_action( 'wp_enqueue_scripts', 'wpse58196_enqueue_custom_script' );`
    
  3. コールバック内で、正しい条件に基づいてカスタムスクリプトをエンキューします。

    function wpse58196_enqueue_custom_script() {
        // If we're on the site front page, and the front page displays a static page
        if ( is_front_page() && 'page' == get_option( 'show_on_front' ) ) {
            // Enqueue custom script, with jQuery as a dependency, and output in the footer
            wp_enqueue_script(
                // handle
                'custom-carousel',
                // path
                get_template_directory() . '/custom.js',
                // dependency array
                array( 'jquery' ),
                // version
                '1.0',
                // in footer?
                true
            );
        }
    }
    
2
Chip Bennett

あなたの問題はおそらくwp_script_is()に関連しています。

代わりにこれを試してください

function aa_home_scripts() {
    if(is_home()){
        wp_enqueue_script(
            'app-home',
            get_template_directory_uri() . '/js/app.home.js',
            array('jquery'), // declare jQuery as dependancy
           '1',
           true // flag to add to footer
       );
    }
}
add_action('wp_enqueue_scripts', 'aa_home_scripts');
0
Rezen

必要なものは

if ( is_front_page() || is_page_template( 'home.php' ) {     
     //javscript stuff...

}
0
Chris_O