Aaron Jorbin just released a script called the “WordPress Theme Directory Slurper“, a command line PHP script which downloads the latest stable version of every theme in the WordPress.org theme repository. You can find more information about it in the GitHub repository.
I had a number of questions about the themes on WordPress.org, so I ran the script this morning a slurped all the themes. It took 112 minutes to run and downloaded nearly 4GB of theme code. Here’s what I found out.
How many themes are on WordPress.org?
Answer: 3187
How many themes are based on Underscores?
Underscores is a popular WordPress starter theme. Automattic uses it for the majority of their released themes, and it was also used as the base for TwentyFourteen and TwentyFifteen. I was curious how many themes in the repository were based on Underscores or a derivitive of it.
Answer: Between 534 and 565 themes (16.75% to 17.72% of the total).
Methodology: I searched for a function I believe to be unique to Underscores based themes. “_s_category_transient_flusher” flushes a specific transient when a category is edited or new post saved (which was found in 565 themes). There’s also a unique code comment in that function, “Like, beat it. Dig?”, which was in 534 themes.
grep -l -r --include '*.php' "category_transient_flusher()" .
grep -l -r --include '*.php' "Like, beat it. Dig?" .
How many themes have “lite” in their name?
Answer: 140 (4.39%)
How many themes use the latest WordPress functions?
WordPress 4.1 introduced a new theme function for outputting archive titles. There was also support added for title tags. I was curious how many themes are taking advantage of these latest features.
Answer:
- the_archive_title: 364 (11.42%)
- title-tag support: 73 (2.29%)
Methodology: The majority of themes have an archive.php template, so I searched for “the_archive_title” in that file:
grep -r --include="archive.php" "the_archive_title" .
For the title tag, I just did a straight grep:
grep -r --include '*.php' "add_theme_support( 'title-tag' )" .
For both I also did a manual check of the output afterwards for duplicates.
How many themes support the customizer?
The Theme Review Team now requires all theme options to be implemented through the Customizer. I wanted to see how many different theme actually added at least one control using “$wp_customize->add_control”.
Answer: 761 (23.8%)
Methodology: I searched for the string “$wp_customize->add_control” and returned the name of the file that had a match:
grep -l -r --include '*.php' "wp_customize->add_control" .
I also did a manual cleanup afterwards of duplicates.
How many themes add an options page?
Answer: 1585 (49.73%)
Methodology: Theme pages are added using the “add_theme_page” function. This doesn’t garauntee the pages is used for options (it could just be a documentation page), but it gives us a pretty good idea. After my first search I realized a popular library “TGM Activation” also included the “add_theme_page” function, so I excluded that from the search:
grep -l -r --include '*.php' --exclude="class-tgm-plugin-activation.php" "add_theme_page" .
How many themes use a bundled options framework?
There are a number of libraries that assist developers in adding theme options. I searched for a couple of the popular ones.
Answer:
- Options Framework: 219 (6.87%)
- Redux: 25 (0.78%)
Methodology: I searched for the the strings “optionsframework_init” and “ReduxFrameworkPlugin::instance”, then manually checked for duplicates. I also checked for Titan Framework, but there were less than 5. Some frameworks (like OptionsTree) are only used as a plugin.
How many themes use TGM Activation?
TGM Activation is a popular library that allows theme developers to require or suggest certain plugins be installed along with the theme.
Answer: 187 (5.86%)
Methodology: I just searched for the filename of the library:
find . -name "class-tgm-plugin-activation.php"
Anything else?
There were a few other items I was curious about. How many themes use Twitter Bootstrap or Font Awesome? How many themes add a shortcode? How many load a Google font? But I decided I’d spent enough time avoiding real work this morning. If there’s other items you’re curious about, let me know I’ll see if I can find out and do a follow-up post.
Cool data…
I would be interested to know how many are child themes.
How many have Bootstrap included?
I would like to know that too.
I too would be interested in see numbers on Bootstrap, along with Foundation.
+1 for Foundation. Also translation ready/translations included could be interesting.
Hello, this is a very interesting study, and I second the questions by Roy and Robert, but most importantly, it would be very nice if you could publish the results of your search.
What are the themes supporting the latest WordPress functions? What are the themes supporting Underscores? Which themes have options page, or support for customizer?
Can you share that info? Are any plans to share it and/or keep this info up to date at least in a monthly report to show how is this improving over time? THAT would be very helpful.
Hi Robert. No plans to keep an updated list or publish the specific themes for each, but that’s why I published a link to the script and the methodology. You should be able to run all these reports (and more) yourself whenever you’re interested.
I think you mean Marcelo ?
OK, may happen to be an interesting exercise to put in practice, right?
Oh! One more. How many themes support Post Formats?
That’s a good one, but I’d rather say: “how many of the compliant WordPress themes include support for custom post types?”
Otherwise, you already have a filter for that:
https://wordpress.org/themes/tags/post-formats/
:)
Thanks a lot for this post and for making the script public. :)
hey Devin! they are killing Options framework and all the other options libraries by require the use of customizer instead. i have a new WP theme submitted for review and after long hours of implementing Options framework options they told me to replace it with the customizer! now i am creating a premium version of my theme and want to submit it to themeforest. Do you think only wordpress.org will require the customizer or big marketplaces like themeforest of mojo-themes will do the same?
ThemeForest is a bit of a wild west in terms of features/UI for themes, but I would recommend standardizing behind the customizer. I have a library similar to Options Framework you might find useful: https://github.com/devinsays/customizer-library. Migrating your options over actually shouldn’t be that difficult- you’ve already done all the hard work of thinking through what they should be and the logic behind them.
Thanks for publishing this data Devin.
You would think the TRT would have done this kind of analysis before making the decision to enforce that all themes on WordPress.org need to only use a feature currently supported by less then 25% of the entire WordPress.org repo. It’s pretty crazy to think that in 6 months 76% of themes will potentially no longer be able to be updated because of this rule.
The Customizer is a failed feature that should not be required as the only theme options panel available to both theme developers and WordPress users. This data clearly illustrates the irrationality of this decision.
Personally, I’m not opposed to the Customizer, I think it is useful for few particular use cases, however it is clearly not enough for nearly 50%+ of themes that also require a theme options page.
I’d love to re-run these numbers using themes that have only been updated recently (though I’m not exactly sure how to slurp that data yet). WordPress.org shows 1868 themes in the search view, which I believe excludes themes that have not been updated in over two years. The WordPress customizer is only three years old, options pages have been around for much longer. So, if you assume all themes using the customizer are ones that have been updated recently 761/1868 is closer to 40%.
I think there are a number of good reasons to move to the customizer, standardization of UI one of the best. All the themes I host on wordpress.org have moved from a custom option page to the customizer, so it’s definitely possible for developers to meet the requirements with existing themes.
Very good post…interesting stats. One person asked about Bootstrap….I use a very limited version of Bootstrap, basically just the grid structure, but it would be interesting to see how many use the full on Bootstrap.
Anyway, definitely a good post Devin.
Hi Devin,
It was really a good post. It will help me to standardize my themes and be with the current good practices.
It would have been very good if you could post the statics of Bootstrap framework implementation.
Thanks a lot