Wordpress - How to change the seperator in the title
UPDATE for WordPress 4.4
Since WordPress 4.4 the wp_title
filter doesn't work because wp_title()
function is not used in core anymore. That function was marked as deprecated, then reinstated until new notice but theme authors are discouraged from using it. Because of that, wp_title
filter still will work if you continue using wp_title()
function directly in your theme but it is not recommended.
There are new filters to customize the document title when theme support for title-tag
is enabled:
pre_get_document_title
document_title_parts
document_title_separator
.
As you only want to customize the separator, you can use document_title_separator
as follow:
add_filter( 'document_title_separator', 'cyb_document_title_separator' );
function cyb_document_title_separator( $sep ) {
$sep = "-";
return $sep;
}
Previous answer
You can use wp_title
filter to customize the <title>
tag.
add_filter( 'wp_title', 'customize_title_tag', 10, 3 );
function customize_title_tag( $title, $sep, $seplocation ) {
// Customize $title here.
// Example taken from https://generatepress.com/forums/topic/title-tag-separator/
$title = str_replace( '|', '-', $title );
return $title;
}
A more complex example of how to use this filter (taken from TwentyTwelve theme):
function twentytwelve_wp_title( $title, $sep ) {
global $paged, $page;
if ( is_feed() )
return $title;
// Add the site name.
$title .= get_bloginfo( 'name' );
// Add the site description for the home/front page.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
$title = "$title $sep $site_description";
// Add a page number if necessary.
if ( $paged >= 2 || $page >= 2 )
$title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) );
return $title;
}
add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );