如何在WordPress主题中将页面标题(H1)移动到header.php(循环外)?

时间:2018-12-11 作者:TelFiRE

我正在尝试将我的页面标题放在标题中。php,因为我希望它在初始内容分区之前打印。令我惊讶的是,事实证明这相当具有挑战性。

我尝试过使用\\u title(),这在大多数地方都有效,但在分类页面上,例如,它会提取第一篇文章的名称

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我知道我可以做大量的if语句,只需确保我涵盖了每个场景,但这看起来很混乱,肯定有更干净、更经得起未来考验的选项吗?

没有!有点乱。不幸的是,没有一个函数可以输出所有页面类型的标题。

WordPress中基本上有4种“类型”的页面需要不同的标题:

单个帖子(或页面)存档搜索结果,这样您就可以编写自己的函数,并将其放在标题中。为每种类型的页面输出适当标题的php:

function wpse_321605_title() {
    if ( is_singular() ) {
        $queried_object_id = get_queried_object_id();

        echo get_the_title( $queried_object_id );
    } else if ( is_archive() ) {
        the_archive_title();
    } else if ( is_search() ) {
        echo \'Searching for: \' . esc_html( get_search_query() );
    } else if ( is_404() ) {
        echo \'Page Not Found\';
    }
}
然而,很多人不喜欢这样the_archive_title() 在category和tag archives前面加上“category:”和“tag:”,因此如果不需要这些前缀,则需要单独处理分类法归档并使用single_term_title():

function wpse_321605_title() {
    $queried_object_id = get_queried_object_id();

    if ( is_singular() ) {
        echo get_the_title( $queried_object_id );
    } else if ( is_tax() || is_tag() || is_category() ) {
        single_term_title()
    } else if ( is_archive() ) {
        the_archive_title();
    } else if ( is_search() ) {
        echo \'Searching for: \' . esc_html( get_search_query() );
    } else if ( is_404() ) {
        echo \'Page Not Found\';
    }
}

相关推荐

WooThemes-供应商/预订-允许供应商管理资源

我正在尝试从WooThemes为bookings插件带来新功能。在组合预订和供应商插件时,不允许供应商用户管理资源(资源是自定义帖子)。我将新功能添加到资源自定义帖子中,然后将这些功能添加到供应商角色(通过用户角色插件)现在,资源显示在供应商角色的管理菜单中,但当我尝试添加新资源时,会出现“您无权访问此页面”错误。我添加的新功能:https://i.stack.imgur.com/OCDlV.png添加到角色的功能:https://i.stack.imgur.com/5t696.png使用角色登录时显示的