From 83792b8566eaec7c32d1500dad99644b3ca7d17b Mon Sep 17 00:00:00 2001 From: Philip Arthur Moore Date: Tue, 11 Nov 2014 21:41:10 +0700 Subject: [PATCH 1/3] First pass at better title handling for WordPress 4.1+ with proper back compatibility baked in. --- functions.php | 8 ++++++++ header.php | 1 - inc/extras.php | 52 +++++++++++++++++++++++++++++++------------------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/functions.php b/functions.php index 537ff627..9eb22bf0 100644 --- a/functions.php +++ b/functions.php @@ -33,6 +33,14 @@ function _s_setup() { // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); + /* + * Let WordPress manage the document title. + * By adding theme support, we declare that this theme does not use a + * hard-coded tag in the document head, and expect WordPress to + * provide it for us. + */ + add_theme_support( 'title-tag' ); + /* * Enable support for Post Thumbnails on posts and pages. * diff --git a/header.php b/header.php index 5f0d5e5f..9b981415 100644 --- a/header.php +++ b/header.php @@ -11,7 +11,6 @@ <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width, initial-scale=1"> -<title><?php wp_title( '|', true, 'right' ); ?> diff --git a/inc/extras.php b/inc/extras.php index 531c7774..078ca085 100644 --- a/inc/extras.php +++ b/inc/extras.php @@ -42,30 +42,42 @@ add_filter( 'body_class', '_s_body_classes' ); * @param string $sep Optional separator. * @return string The filtered title. */ -function _s_wp_title( $title, $sep ) { - if ( is_feed() ) { +if ( ! function_exists( '_wp_render_title_tag' ) ) : + function _s_wp_title( $title, $sep ) { + if ( is_feed() ) { + return $title; + } + + global $page, $paged; + + // Add the blog name + $title .= get_bloginfo( 'name', 'display' ); + + // Add the blog description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) { + $title .= " $sep $site_description"; + } + + // Add a page number if necessary: + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { + $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) ); + } + return $title; } + add_filter( 'wp_title', '_s_wp_title', 10, 2 ); +endif; - global $page, $paged; - - // Add the blog name - $title .= get_bloginfo( 'name', 'display' ); - - // Add the blog description for the home/front page. - $site_description = get_bloginfo( 'description', 'display' ); - if ( $site_description && ( is_home() || is_front_page() ) ) { - $title .= " $sep $site_description"; +/** + * Title shiv for blogs older than WordPress 4.1 + */ +if ( ! function_exists( '_wp_render_title_tag' ) ) : + function _s_render_title() { + echo '' . wp_title( '|', false, 'right' ) . "\n"; } - - // Add a page number if necessary: - if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { - $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) ); - } - - return $title; -} -add_filter( 'wp_title', '_s_wp_title', 10, 2 ); + add_action( 'wp_head', '_s_render_title' ); +endif; /** * Sets the authordata global when viewing an author archive. From 648a5467e90a8c7fb5c564587dadbb2798050029 Mon Sep 17 00:00:00 2001 From: Philip Arthur Moore Date: Fri, 14 Nov 2014 08:46:20 +0700 Subject: [PATCH 2/3] Better title handling for WordPress 4.1. See #644. --- inc/extras.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/inc/extras.php b/inc/extras.php index 078ca085..b7a5336a 100644 --- a/inc/extras.php +++ b/inc/extras.php @@ -35,14 +35,14 @@ function _s_body_classes( $classes ) { } add_filter( 'body_class', '_s_body_classes' ); -/** - * Filters wp_title to print a neat tag based on what is being viewed. - * - * @param string $title Default title text for current view. - * @param string $sep Optional separator. - * @return string The filtered title. - */ if ( ! function_exists( '_wp_render_title_tag' ) ) : + /** + * Filters wp_title to print a neat <title> tag based on what is being viewed. + * + * @param string $title Default title text for current view. + * @param string $sep Optional separator. + * @return string The filtered title. + */ function _s_wp_title( $title, $sep ) { if ( is_feed() ) { return $title; @@ -69,10 +69,13 @@ if ( ! function_exists( '_wp_render_title_tag' ) ) : add_filter( 'wp_title', '_s_wp_title', 10, 2 ); endif; -/** - * Title shiv for blogs older than WordPress 4.1 - */ if ( ! function_exists( '_wp_render_title_tag' ) ) : + /** + * Title shim for sites older than WordPress 4.1. + * + * @link https://make.wordpress.org/core/2014/10/29/title-tags-in-4-1/ + * @todo Remove this function when WordPress 4.4 is released. + */ function _s_render_title() { echo '<title>' . wp_title( '|', false, 'right' ) . "\n"; } From 3a25519cc757d03e921826e06032dcfd0b351e2c Mon Sep 17 00:00:00 2001 From: Philip Arthur Moore Date: Tue, 2 Dec 2014 20:23:28 +0700 Subject: [PATCH 3/3] Adjust todo notice for wp_title shim. --- inc/extras.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/extras.php b/inc/extras.php index b7a5336a..99b49d8a 100644 --- a/inc/extras.php +++ b/inc/extras.php @@ -74,7 +74,7 @@ if ( ! function_exists( '_wp_render_title_tag' ) ) : * Title shim for sites older than WordPress 4.1. * * @link https://make.wordpress.org/core/2014/10/29/title-tags-in-4-1/ - * @todo Remove this function when WordPress 4.4 is released. + * @todo Remove this function when WordPress 4.3 is released. */ function _s_render_title() { echo '' . wp_title( '|', false, 'right' ) . "\n";