Some news on recent changes for WordPress 3.8 that make theme development even easier:
From 3.8 onwards, theme developers will be able to check if a post has any post format associated by checking
has_post_format() without passing an argument:
// Does the post have any format assigned to it?
// Does the post have this specific format assigned to it?
has_post_format( 'aside' );
// Does the post have any of these formats assigned to it?
has_post_format( array( 'aside', 'image', ) );
Additionally, it is now possible to be more specific about a theme’s custom background support. You can now specify
default-attachment arguments for background images. This is the full array of defaults when registering theme support now:
$defaults = array(
'default-image' => '',
'default-repeat' => 'repeat',
'default-position-x' => 'left',
'default-attachment' => 'scroll',
'default-color' => '',
'wp-head-callback' => '_custom_background_cb',
'admin-head-callback' => '',
'admin-preview-callback' => '',
- With the improved theme experience in the Appearance menu, WordPress can accommodate for even bigger screenshot sizes of your theme, the new standard size is now 880x660px!
- If you have themes in the WordPress.org repository or plan to release a theme there (you should!), these three tags will be available to classify your theme appropriately:
fixed-width, to make the terms broader and match web design terminology better. You can also classify your theme as
accessibility-ready – if it is.
Nathan Ford wrote a great article about how you can use the attribute selector to define styles for a multitude of classes that share a common element. Initially I thought this was great (I actually still think this is a great idea), and used it in
_s and Twenty Thirteen to simplify the clearfix selector and some others. We used
[class*="content"], to grab all classes that contained those two words, essentially addressing our entire page structure with two selectors. Awesome, right?
Well, it turns out there are a few issues with this approach. After a while we received a report that Modernizr uses a
generatedcontent class on the html element, screwing with the rest of the site because the styles for the
[class*="content"] selector were applied. We also received reports from WordPress.com, where users specified tags, categories, or post titles that contained one of our two words. Since WordPress adds all categories and tags as classes in
post_class(), this, again, broke the site’s layout.
I still think this a valid approach in projects where you can control the class namespace. Since you can’t really do that in WordPress, it’s not a good approach for theme developers.
I recently attended Steve Zehngut’s session on Underscores at WordCamp Los Angeles, where I was surprised to learn that a lot of developers are unsure how to update their themes with the changes we make on
For that we decided to make _s version-less, to prevent the feeling you need to update your
_s-based themes with these constant changes. With no real roadmap, previously we bumped the version number arbitrarily whenever we felt like it, with a big enough change. Continue reading
When a theme author adds Jetpack Infinite Scroll support to their theme, they configure its options specifically for that theme. Occasionally you might want to override the theme’s defaults for your purposes, and in this article, I’ll show you how to do so in a child theme.
There was an interesting bug reported for Twenty Twelve recently: The
.single-attachment body class only gets applied when the attachment’s parent is a post (or custom post type). If the attachment’s parent happens to be a page, that class is missing.
In case you have been using
.single-attachment to specify styles for the image attachment page, make sure to test your theme with images that have a page as a parent. And use the
.attachment body class in the future. ;)
Chip Bennett, Team Rep and Administrator of the WordPress Theme Review Team, wrote a comprehensive post about the intricacy around home page and front page templates. Highlights are his tips around conditionals in
front-page.php to avoid code duplication. Enjoy!
_s, I came across an issue asking if we could remove the loop syntax in singular templates since there is never more than one post. I asked for Michael Field‘s opinion on the matter and he pointed me to a core ticket for Twenty Eleven about the same issue. Continue reading
I had the chance to speak at WordCamp San Francisco this year and, this time, I tried to do something different. Instead of doing a talk with lots of code examples and howto info that could be read in a blog post I decided to put my heart on my sleeve and shoot for inspiration. Of course, I still talked about WordPress themes. No one wants to hear a rousing talk from me on how much I love cooking at home. I tried with this talk to share why I love working with WordPress themes. Because I really do. I got the impression that people liked the talk. Maybe you will too. Check out (What’s So Funny ‘Bout) Themes, Love, and Understanding on WordPress.tv. Or just watch it here on ThemeShaper!
P.S. Someone remind me the next time I speak to not wear a shirt that gets wrinkled so easily. :)
Photo adapted from a banksy shot by Thomas Hawk.
I’m excited to share that we’re pushing things forward in WordPress 3.6 – default snippets for comments, the comment form, and the search form are updated with the latest HTML5 markup.
While the changes to both the search form and the comment form are rather marginal (added classes and some streamlined markup), the comment markup changed a bit more. The new version offers the best features from previous default themes and the pre-existing markup from core.
At Automattic, we exclusively use the Customizer for theme options instead of theme option pages. We believe that themes should only alter the display of content and should not add any additional functionality that would be better suited for a plugin. Since all options are presentation centered, they should all be controllable by the Customizer.