有条件地添加操作挂钩-仅当使用home.php时

时间:2012-10-10 作者:Iladarsda

我正在尝试在函数中添加动作挂钩。仅当页面为home.php 但以下方法不起作用

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

// do stuff

}
确保正在使用的文件home.php 我这样做

global $template; echo $template; 

3 个回复
最合适的回答,由SO网友:Adam 整理而成

使用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 如果是这样,你可以继续你的逻辑。。。

SO网友:yuric

我有这个问题。我只想在加载主页时包含Jssor滑块脚本。我用的是home.php 我也是这样解决的:

重命名我的home.php 归档到其他文件,例如home_mysite.php 在文件顶部的注释标题处设置此页面模板的名称,如:

/**
* Template Name: Home
*/
<然后我创建了一个新的空页设置Home 作为页面模板Settings > Reading > A static page > Front page: Home) is_page(\'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脚本只在访问主页时加载,而不是访问其他页面或帖子时加载。

SO网友:Alon Katziri

您需要的功能是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
   }
}

结束