问题描述
我的主题是支持 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_title
和 document_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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。