web-dev-qa-db-ja.com

条件付きでオプションを追加 - home.phpが使用中の場合のみ

私は、ページがhome.phpである場合にのみ、functions.phpにアクションフックを追加しようとしていますが、以下は動作しません

if ( is_page_template("home.php") ) {

// do stuff

}

使用されているファイルがhome.phpであることを確認するために、これを行います。

global $template; echo $template; 
2
Iladarsda

is_homeは伝統的な意味では技術的にはページテンプレートではないため、is_page_templatehome.phpに対して機能しないため、代わりにadd_action('template_redirect', 'are_we_home_yet', 10); function are_we_home_yet(){ if ( is_home() ) { //your logic here } } を使用してください。

add_action('template_redirect', 'are_we_home_yet', 10);
function are_we_home_yet(){
        global $template;
        $template_file = basename((__FILE__).$template);
        if ( is_home() && $template_file = 'home.php' ) {
        //do your logic here
    }
}

改訂:

home.php

改訂された答えは実際にあなたが本当に必要なものです、それはあなたがホームページにいるかどうか、テンプレートファイルが含まれていることを得ることに加えてチェックします。あなたの論理について….

7
userabuser

あなたが探している機能はis_front_page()です

add_action('template_redirect', 'work_only_on_front_page', 10);
   function work_only_on_front_page(){
    if ( is_front_page() ) {
    // Your code
   }
}
0
Alon Katziri

私はこの問題を抱えています。ホームページをロードするときだけJssor Sliderスクリプトを含めたいと思いました。私は home.php も使っていましたが、このようにして解決しました。

  1. 私の home.php ファイルの名前を home_mysite.php のように別のものに変更し、このページテンプレートの名前をファイルの先頭のコメントヘッダーに設定します。
/** 
 *テンプレート名:Home 
 */
  1. それから私は新しい空のページ設定 Home をページテンプレートとして作成しました。
  2. 新しいページをフロントページとして表示するようにWordpressを設定しました(Settings > Reading > A static page > Front page: Home
  3. それで、最後に私はis_page('home')が機能するために私の関数の中に条件付きコードを入れることが必要であることを考え出しました。 ( 'home' は私の空の新しいホームページ slug です)。つまり、条件付きでアクションを追加しようとしたときに、自分のホームページが読み込まれているかどうかを確認できず、is_page('home')が常にfalseを返していました。常にアクションを追加し、条件付きでスクリプトをエンキューするためのロジックを変更したときにうまくいきました。

functions.php :でうまくいったコード

function mysite_jssor() {
    //conditionally enqueue the script 
    if ( is_page('home') ) {
        wp_enqueue_script( 'jssor', get_stylesheet_directory_uri() . '/js/jssor.js', array( 'jquery' ), false, false );
    }
}
//always adds the action
add_action( 'wp_enqueue_scripts', 'mysite_jssor' );

このように私のJssorスクリプトはホームページにアクセスするときだけロードされ、他のページや投稿にアクセスするときはロードされません。

0
yuric