私は、ページがhome.php
である場合にのみ、functions.phpにアクションフックを追加しようとしていますが、以下は動作しません
if ( is_page_template("home.php") ) {
// do stuff
}
使用されているファイルがhome.php
であることを確認するために、これを行います。
global $template; echo $template;
is_home
は伝統的な意味では技術的にはページテンプレートではないため、is_page_template
はhome.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
改訂された答えは実際にあなたが本当に必要なものです、それはあなたがホームページにいるかどうか、テンプレートファイルが含まれていることを得ることに加えてチェックします。あなたの論理について….
あなたが探している機能は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
}
}
私はこの問題を抱えています。ホームページをロードするときだけJssor Sliderスクリプトを含めたいと思いました。私は home.php も使っていましたが、このようにして解決しました。
/** *テンプレート名:Home */
Settings > Reading > A static page > Front page: Home
)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スクリプトはホームページにアクセスするときだけロードされ、他のページや投稿にアクセスするときはロードされません。