I want to emphasize here, first, that there is a lot I like about WordPress. That is why I've chosen to use it to power a new blog at an old domain of mine (referenced in my profile). I haven't had a blog there for years, but now that I'm effectively finished with grad school I'd like to again. I think that WordPress is the most feature rich among blogging platforms. I was excited to learn about about WordPress features like Post Formats that fix situation that I used to have to hack together solutions for.
I'm not posting this simply to complain. I hope that by communicating my frustrations this otherwise fantastic software might be improved, or that someone might offer a solution to my problem.
I consider myself adept at HTML and CSS. I don't "know" any programming or scripting language, but can read code and modify it slightly, especially in languages that use a C-like syntax.
Now for my frustrations: WordPress template tags suck. I've spent that last several days developing my own theme. I began with a framework theme and stripped it down. My goal has been to have minimalist semantic HTML5 markup output that is easy to style with CSS. During development I became frustrated by the inconsistent parameter syntaxes. I had to look up every tag I wanted to use. Not only are there three ways to pass parameters to a tag--PHP-style, query-string-style, and arrays--but also tags that do very similar things such as "the_category" and "the_tags" have different parameter sets. "The_category" doesn't accept $before or &after parameters, but "the_tags" does. Also, the former is singular and the latter plural--why?
Again, I'm not trying to nitpick above, just trying to illustrate why someone who is otherwise comfortable with web development, might be frustrated by WordPress templates.
Today, I uploaded my templates to my server and activated the theme. To my surprise WP tags output all sorts of extraneous code. Among many issues, I noticed that the "ul" tags output by wp_nav_menu have the class "menu." Not only do I not want those elements to have a class, but that class is so commonly used in web design that it seems it would be likely conflict with a class one might add to an element somewhere else. I understand that I can fix this using that tag's array style parameters, but I don't think I should have to. If a designer wants a class they should be able to add it to outputted elements, yes, but why include it by default? Another thing that bothers me is all the code that wp_head outputs. I don't want visitors to know what version of WordPress I'm using. It seems like that's just asking for a hacker to take advantage of a vulnerability should one exist that isn't yet known.
So I have several questions for the development community: 1) Are there any plans for more consistent template tag parameter passing? 2) What is the rational behind having template tags output so many classes by default? and 3) is there a script or something I can put in functions.php to make all template tags output "clean" html?
Thanks. I do think you have a great CMS overall, I'm just frustrated with what I mentioned above.