问题描述

我的主题是支持 title-tag add_theme_support('title-tag'),但是我不能在主页上从<title> 中删除 wordpress 描述 bloginfo('description')

我正在尝试使用此过滤器没有成功:

add_filter( 'wp_title', function ( $title, $sep ) {
    global $paged, $page;

    $title .= get_bloginfo( 'name' );

    if ( is_home() || is_front_page() )
        $title = "$title";

    return $title;
}, 10, 2 );

最佳解决方案

wp_get_document_title()有一些有趣的过滤器 – pre_get_document_titledocument_title_parts

/**
 * Filter the parts of the document title.
 *
 * @since 4.4.0
 *
 * @param array $title {
 *     The document title parts.
 *
 *     @type string $title   Title of the viewed page.
 *     @type string $page    Optional. Page number if paginated.
 *     @type string $tagline Optional. Site description when on home page.
 *     @type string $site    Optional. Site title when not on home page.
 * }
 */
add_filter( 'document_title_parts', function ( $title ) {

    if ( is_home() || is_front_page() )
        unset($title['tagline']);

    return $title;

}, 10, 1 );

回顾一下 pre_get_document_title 滤镜非常有趣。在处理标题之前,它将运行此过滤器。如果结果不为空 (这不是预期的),则该过程是 short-circuited 。

$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
    return $title;
}

这意味着如果您定义了标题,则不必担心任何其他事项。好的是,你可以对规则做出例外。所以回答你原来的问题:

add_filter( 'pre_get_document_title', function( $title ) {

    if ( is_home() || is_front_page() ) {

        // Return blog title on front page

        $title = get_bloginfo( 'name' );
    }

    return $title;

} );

次佳解决方案

找到一个解决方案:

add_filter( 'pre_get_document_title', function ( $title ) {
    if(is_front_page()){
        $title = get_bloginfo();
    }
    return $title;
});

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。