We’re Ruining WordPress

Every single time that someone experiences warnings, error messages, a white screen of death, or confusion, perception suffers. It doesn’t matter that a PHP fatal was caused by a plugin deactivation and a custom theme template tag not wrapped in a function_exists check. To the end user, it’s a problem with WordPress. No software is perfect, especially in the case of open-source software, because every time that a developer touches it he has the ability to either become its greatest ambassador or biggest enemy through choices made in coding practices, philosophical leanings, or business decisions.

I’m not a WordPress purist. I do not believe that it is a sacred cow. Other technologies excite me. Mobile thrills me. The WordPress Way isn’t always the right way. I do not believe that the word of Matt is gospel. I think WordPress is bigger than one man. I certainly don’t believe that the GPL is a matter of “good person” versus “bad person”. I generally think that the online community can be insular, aggressive, coercive, and naive at times. And I generally think that most of us are doing a good job of hiding our insecurities about not being smart enough or good enough for each other.

There’s a But.

Continue reading “We’re Ruining WordPress”

Introducing: The Subtitles Plugin

One of my greatest frustrations with WordPress is its lack of intuitive subtitle functionality. As both a WordPress theme maker and a great fan of good writing, I’ve lately been struck by how much I appreciate landing on a story and receiving better context around what I’m about to read. Where titles tell me what I’ve found, subtitles often tell me why I should care. A published post titled “Life in Hanoi” might give you a good idea about what I’ve written, but an immediately following “On why I’ll stay forever…” will pull you in, engage you, and prime you for what’s ahead.

Subtitles in Action

Professional Themes, a relatively new company that’s singularly focused on helping businesses create beautiful websites with WordPress, recently asked me to help with the building of Creative Portfolio, a new premium portfolio-styled theme for creative professionals. It has it all: a stunning home page template, featured content and Jetpack portfolio custom post type support, Post Format support, and brilliant looking post subtitles (sign up to receive a launch announcement). The subtitles were a nonnegotiable design element of the theme, and Professional Themes felt that there were no intuitive or easy ways to add them into posts out of the box. I agreed.

In an age where attention spans are low and competition for them is high, Subtitles aims to provide creative professionals with an even sharper tool for crafting online stories. Post excerpts as faux-subtitles won’t do. Those belong in search results, archived views, truncated feeds, or other locations where post summaries shine. And using them for literal subtitles is confusing from both a development standpoint and also a usability standpoint. I want my subtitles to be called subtitles, and I want them to go where I think they belong, just after a title.

This line of thinking extends to both the front end and back end. Within the WordPress Dashboard on a New Post page I want subtitles to visually go where they belong, not in an obscure meta box that feels like it’s in the wrong place. They deserve placement under the post title in a way that feels native to WordPress, with prompt text that says Enter subtitle here. Clear, simple instructions for users and nothing else to do. No theme tweaks. No custom template tags. No manually entering in meta via custom fields. No coding. Just writing.

The Subtitles Prompt

By default Subtitles is designed to show in most views: singular, post archives, search results, and the like. All of this is completely customizable for developers. Want to add subtitles into any custom post type? Done. Want to turn them off in pages or search results? Done. Want to filter the output of all subtitles on your site? No problem. Want to modify the markup output of subtitles or reposition them entirely via custom template tags? Or how about showing them everywhere on your site, like in your widgets?

You get the idea.

This is a plugin that does one thing and one thing only. It should just work for users, but it’s also completely within your control as a theme or plugin developer. It’s well-documented, follows sensible coding practices, takes security of data input and output seriously, and aims to push online publishing forward by giving writers more power over their words.

Head over to the WordPress.org plugin repository (download) or GitHub (download) to grab your copy of Subtitles today. If you like it, thank me with coffee. If you find it buggy, tell me on GitHub. And if you have a cool example of how you’re using Subtitles on your website, let me know on Twitter.


Questions for WordPress Theme Developers

Every theme developer should be able to answer most, if not all, of the following questions. Let me know if I’ve missed anything obvious. This was a quick mind dump.

If you plan on hiring a theme developer at your organization, ask some of these questions. They matter.

  1. What are the primary differences between theme frameworks, starter themes, and parent/child themes?
  2. What primary languages make up WordPress themes?
  3. What is template hierarchy?
  4. What are custom post types?
  5. Are custom post types more appropriate in themes or plugins? Why?
  6. What are post formats?
  7. What is the GPL? What are its primary freedoms?
  8. Does the GPL require you to give away your themes at no cost?
  9. What practical implications are there in using GPLv2 versus GPLv3 licensing for a theme?
  10. At a minimum which files are required for a functional theme?
  11. Are themes required to be 100% GPL?
  12. What are template parts?
  13. What is The Loop?
  14. What practical considerations should be taken into account when creating a post editor stylesheet for a theme?
  15. What is RTL? What are two primary ways of RTL’ing a theme?
  16. What’s the best way of implementing scripts and styles in a theme?
  17. What’s the best way of implementing non-standard fonts in a theme?
  18. What is infinite scrolling? Are you in favor of it or not? Why?
  19. Do you prefer px units or rem units? Why?
  20. What is debouncing in JavaScript?
  21. What is throttling in JavaScript?
  22. Explain theme internationalization.
  23. Explain your favorite methods for debugging themes.
  24. What are transients and give an example of how they’d be used in a theme.
  25. What is prefixing? Why is it important?
  26. What are hooks? What is the difference between actions and filters?
  27. What is a theme setup function?
  28. What’s your favorite template tag? Least favorite? Why?
  29. Explain sanitation and validation.
  30. What drawbacks are there to the Customizer-only approach for theme options?
  31. What do you hate most about WordPress themes? How would you fix it or how are you getting around it?
  32. What practical implications should theme developers keep in mind on theme switch?
  33. What performance considerations should be taken into account when developing themes?
  34. What SEO implications should be taken into account when developing themes?
  35. Give an example of what you feel is trivial post meta versus non-trivial post meta.
  36. Should theme screenshots reflect themes at their best or themes immediately post-activation? Why?
  37. What standardized theme hooks would you like to see added into WordPress?
  38. What are page templates?
  39. Explain the differences between how themes treat “home pages” versus “front pages”.
  40. What makes a theme premium? Why?
  41. What one thing do you wish were baked into WordPress that would make themers’ jobs easier to do?
  42. Explain a few differences between postMessage support and refresh within the Customizer.
  43. How do you prefer to deal with featured images in singular versus non-singular views?
  44. Explain theme mods.
  45. Explain a few methods for making themes more accessible.
  46. How would you improve the WordPress theme taxonomy?
  47. Explain how content width is handled by themes.
  48. What’s your favorite theme? Why?
  49. Where’s the first place you look for answers when building themes?
  50. What does it mean when we say that a function is pluggable?