尝试为首页,页面,帖子和类别分别加载标题-仅类别无效

时间:2020-11-11 01:14:41

标签: wordpress wordpress-theming

由于我需要加载不同的内容类型的不同的Google广告管理系统代码,因此我为每种类型创建了单独的标头,并将此代码段放入index.php中以相应地加载它们:

if ( is_front_page() ) { 
    get_header('home') ;
}
elseif ( !is_front_page() AND is_page() ) {
    get_header('page') ;
}
elseif ( is_single() ) {
    get_header('article') ;
}
elseif ( is_category() ) {
    get_header('category') ;
}
else {
    get_header() ;
}

除类别外,所有其他功能都很好。它没有加载。它只是加载默认标题。

我在做什么错了?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

简短的答案是尝试使用is_archive()而不是is_category()。如果这样不起作用,则可能需要转储全局$wp_query变量,并查看在该特定u​​rl上返回的查询类型。

同样,您可以考虑使用is_singular()而不是is_single(),因为is_single仅限于帖子。

要考虑的另一点是使用&&而不是AND(它们与优先级是同义的。请看一下this answer,以进行更深入的了解)

最后,如果您仅加载单独的Google广告管理系统代码,则不确定您是否需要维护x个头文件。您是否考虑过将脚本代码放入functions.php文件中并将其加载到wp_enqueue_scriptswp_head钩子上?

而不是像这样维护单独的标题:

if( is_front_page() ){
    get_header( 'home' );
} else if( is_page() ){
    get_header( 'page' );
} else if( is_singular() ){
    get_header( 'article' );
} else if( is_archive() ){
    get_header( 'category' );
} else {
    get_header();
}

您可以使用相同的is_函数将这些脚本直接放入其中,如下所示:

add_action( 'wp_head', 'load_ad_manager_scripts' );
function load_ad_manager_scripts(){
    if( is_front_page() ){
        echo '<script>// Home Ad Manage Code</script>';
    } else if( is_page() ){
        echo '<script>// Page Ad Manage Code</script>';
    } else if( is_singular() ){
        echo '<script>// Single Manage Code</script>';
    } else if( is_archive() ){
        echo '<script>// Archive Manage Code</script>';
    } else {
        echo '<script>// Generic Manage Code</script>';
    }
}
相关问题