WordPress: Get Raw Document Title without Blog Name
document_title_parts, wp_get_document_title
Sometimes it is necessary to retrieve the current Document Title (used in the title tag) without the blog name or separators. As of WordPress 4.4 the wp_get_document_title() function become available which should be used to fetch the title – unfortunately it doesn’t accept any arguments and it is not possible to access the pure page title directly. Instead we can hook into the document_title_parts filter which allows us to access all title parts (title, page, tagline, site).
Workaround#
// workaround to retrieve the document title
function getDocumentTitle(){
// temporary title
$documentTitle = 'Unknown';
// extractor function
$extractor = function($parts) use (&$documentTitle){
if (isset($parts['title'])){
$documentTitle = $parts['title'];
}
return $parts;
};
// add filter to retrieve the page title
add_filter('document_title_parts', $extractor);
// trigger title generation
wp_get_document_title();
// remove filter
remove_filter('document_title_parts', $extractor);
// return result
return $documentTitle;
}