Working on a new default theme is always an opportunity to improve core’s Theme APIs too. With the release of Twenty Fifteen there are quite a few improvements that made it in:
Archive Template Tags
Theme authors get to use four new functions to use in their archive templates:
the_archive_title()for returning/displaying the title of the current term, date, post type, post format, or author archive.
the_archive_description()for returning/displaying the description associated with the current term archive.
They are especially handy when a theme doesn’t have dedicated templates for taxonomy or date archives, but can essentially be used in all archive templates. The description functions only display term descriptions, since no other archive type really offers descriptions.
Navigation Template Tags
Core has provided template tags for links between posts and pages of posts for a long time. Now theme authors can resort to higher-level template tags to display an entire navigation snippet. If you’ve built your themes off of recent default themes, or created child themes from them, these should look very familiar. As a heads up: Since default themes have been developed in HTML5 for five years now, there is no HTML4 version of these tags.
the_post_navigation()for navigation to the next and previous post.
the_posts_navigation()for navigation to the next and previous page of posts.
the_posts_pagination()for paginated navigation between pages of posts. (Updated for 4.1 RC1, see this post)
All functions use the same wrapping markup with semantic class names, so it’s easy to style them in one go. The navigation functions accept custom link texts and screen-reader-texts, in case the defaults are not applicable. The pagination functions even accept all arguments that
paginate_links() does, too! (Except for the
'type' argument, we need that to be plain so the template tag doesn’t break )
Also in 4.1:
Theme Support for Title Tags
I’ve written about title tags before and will refer to that post for more information about the groundbreaking changes that happened here.
Page Template Body Classes
They got a minor update that simplifies those class names and allows theme authors to target folders of page templates. With this
/page-templates/full-width.php will produce
page-template-page-templatesfull-width-php. Worked on in #23470 and then introduced in r30100.