我发布这个答案是为了回答另一个问题,但由于它是相关的,而且是最新的,我认为它可能对一些人有用。
自Wordpress v4以来,文档标题的生成方式发生了变化。4.0。现在wp_get_document_title
指示如何生成标题:
/**
* Displays title tag with content.
*
* @ignore
* @since 4.1.0
* @since 4.4.0 Improved title output replaced `wp_title()`.
* @access private
*/
function _wp_render_title_tag() {
if ( ! current_theme_supports( \'title-tag\' ) ) {
return;
}
echo \'<title>\' . wp_get_document_title() . \'</title>\' . "\\n";
}
下面是v5中的代码。4.2。以下是可用于操纵标题标记的过滤器:
function wp_get_document_title() {
/**
* Filters the document title before it is generated.
*
* Passing a non-empty value will short-circuit wp_get_document_title(),
* returning that value instead.
*
* @since 4.4.0
*
* @param string $title The document title. Default empty string.
*/
$title = apply_filters( \'pre_get_document_title\', \'\' );
if ( ! empty( $title ) ) {
return $title;
}
// --- snipped ---
/**
* Filters the separator for the document title.
*
* @since 4.4.0
*
* @param string $sep Document title separator. Default \'-\'.
*/
$sep = apply_filters( \'document_title_separator\', \'-\' );
/**
* Filters 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.
* }
*/
$title = apply_filters( \'document_title_parts\', $title );
// --- snipped ---
return $title;
}
所以这里有两种方法可以做到这一点。
第一个使用pre_get_document_title
如果您不打算更改当前标题,则过滤哪些内容会缩短标题生成,从而提高性能:
function custom_document_title( $title ) {
return \'Here is the new title\';
}
add_filter( \'pre_get_document_title\', \'custom_document_title\', 10 );
第二种方式使用
document_title_separator
和
document_title_parts
在使用以下函数生成标题后,在函数中稍后执行的标题挂钩和标题分隔符
single_term_title
或
post_type_archive_title
根据页面和即将输出的内容:
// Custom function should return a string
function custom_seperator( $sep ) {
return \'>\';
}
add_filter( \'document_title_separator\', \'custom_seperator\', 10 );
// Custom function should return an array
function custom_html_title( $title ) {
return array(
\'title\' => \'Custom Title\',
\'site\' => \'Custom Site\'
);
}
add_filter( \'document_title_parts\', \'custom_html_title\', 10 );