Darn You WordPress!! is a very recent post about wishes for wordpress and his core.
Before to answer about the question about coherence or generic design of template tags (with optional echoing).
This recent post is an opportunity to write a short post about our choice of WordPress tools used since more than 4 years as blog or cms.
Some arguments :
Open-source, large community, traceability of the developments, Reactivity of the groups, the possibility of concentrating on the fields of website or data models (CMS) – I do not have particular affinity for the fields of the security or mechanics like ajax
an architecture which makes it possible to build light code for visitor’s webside without interface:
Personally I prefer to write a simple number in css to change a color or a width or copy and paste a template tags in a theme file than to open a wysiwyg heavy desktop application to generate a 30 lines HTML file.
a good data-model totally open for cms architecture (Instead creating new tables, for some plugins, we use the powerful taxonomies architecture).
On the visitor’s webside,
a broad (infinite) range of possible personalizations: from simple blog to cms corporate or groups website.
On the admin (author’s or editor’s) side
Two modes to edit contents (via html or a wysiwg like editor)
On designer’s side – plugin, hook,…
Possible dangers and drifts :
Admin UI :
Client side vs Server side
Client/server versus HTML enriched by Ajax and JS (Excepted iPhone version or unfinished Mars Edit) I am interrogative about the evolution of dashboard and admin UI. Instead to create a powerful client application using the power of the client computer, with a slowdown of flowrate, WP try to recreate an good interface but with the side effects of html and a server shared by lot of users…
Revision, Trash… Good, but if settings are not good, database will contains more drafts than public posts.
Flow rate 3G vs Optical or Cable – mobile or high speed: On visitor’s side, the target is again as 10 years ago, the shortest files as possible
Image processing announced in 2.9 – why not ? but what are consequences on servers. Hope that this features will be optional (I think it is better to prepare images before to sent them…)
Contrasts et contradictions:
If we analyse deeply the previous paragraphs, it is visible that it is not easy to choose the good way for further developments or fixing issues…
End users without knowledge in php, html or css are not identical to general or « WP specific » programmers. The choices must leave open the two ways without closing the other.
Even if I can test the nightly built on a local server, on production server, I wait always the first sub version (i.e 2.8.1)
About the code and the source :
What could we expect?
We know that we are a little slave of the history of the product (obsolete functions) but sometime, for a new branch, a new rewritten template tag or a renewed function is better.
Evaluating consequences of a modification is not easy particularly for the innumerable themes or plugins.
But we find again here the advantages of open source… where each developer participates for the whole communauty.
coherence, robustness, shortest sources,… Theses properties are well known but must be periodically remembered.
writing conventions: unique ID for dev – avoiding conflicts – naming with unique prefix – are some wished properties or recommandations.
param like string or args in array: passing params in a concatenate string or with an array is very powerful and offers future evolutions or personalization. Instead a template tag (like wp_list_pages), the_tags today don’t allow it…
Example of the template tag – the_tags() – with only display list of tags attached to a post in the loop. (three params)
During analyzing this template tag, you discover a deep stacking like a Russian headstock.
And to create the same function but sub-selecting some tags (ie of a language as in xili-tidy-tags plugin) the function is not ‘as is’ usable. Consequently the extension must contain a new function and the theme’s designer must include this new template tag.
Note: a ticket on trac will be soon published with examples. Just need time to prepare and write it.