So, for the past year or so I have struggled in trying to figure out how best to incorporate WordPress into a Symfony application. The conclusion I have come to? I’m really starting to wonder if it’s worth any of the trouble. So, I’m trying to figure out, for myself at least, what aspects of WordPress I really appreciate; of those features, I really wonder whether or not building a new plugin (or extending sfSimpleBlogPlugin/sfBlogsPlugin) would not be a better idea.
I have not yet started on this project, so to decide whether it’s worthwhile, what are the aspects of WordPress (or just blog administration in general) that I really enjoy and would like to see in any other solution?
-
Themes
The multiplicity of WordPress themes is a great example of how extendible the blogging framework is. Just download it, select it, and you’re good to go. I would love, with a Symfony solution, to be able to define a theme in a config file (or even in the admin backend, as is done with WordPress) and have it display. Or choose to use the application template default instead. Whatever solution I come up with, I would love for it to be able to accomodate existing WordPress themes without any extensive reworkings (plug and play would be ideal). -
Spam Collection/Akismet
WordPress makes good use of the Akismet spam prevention filters. My solution would have to make use of these prevention techniques as well. It’d be great to figure out how to make use of ReCAPTCHA, but your avergae blog nowadays usually depends upon active filtering and I want my solution to seem like any other typical blog. -
Scheduling and Drafting of Posts
I love the ability in WordPress of drafting and publishing against a future date. The ability to view these drafts or, if logged in, to see to-be-published posts is needed. -
Pingbacks
It’s just good blogging ettiquete to pingback to other blogs. My pingback solution should work correctly with existing blogging frameworks. -
RSS Feeds
I’d like to deliver post/comment feeds for the entire blog as well as individual posts. -
Media Library
Having pictures and audio (and YouTube code) available for blog posts is made much easier when you’re confident that they are on the server and available for use. An effective Media Library would be nice. On the frontend, it might even be cool to put together some sort of slide-show option (although that might be more work than I need right now). -
Twitter Integration
I haven’t yet figured out the best way to use Twitter, but it’d be nice to be able to simul-publish a post along with a custom/default Twitter announcement and link. Perhaps it’d also be cool to pull in Twitter posts as a sort of specialized blogroll. -
Categories/Tags
Having a branching tree of categories is a very nice aspect of modern blog frameworks. I would love to be able to filter the posts based on multiple categories (not that I actually plan on writing so many posts to make that particular feature needful, but it’d be nice to have). Deleting a category should, in my mind, simply move all of the posts up to belong to the category parent (if it exists). -
Wysiwyg Editor
The user should be able to set whether they wish to have the Wysiwyg editor or the source editor as their default – I use source almost all of the time and to have that be default for myself would be great. The Wysiwyg Editor should be fast and user-friendly. -
Gravatars
If allowed by the theme, the use of gravatars would be very nice indeed. I always enjoy having my avatar at a blog be personalized without me having to do anything. -
Word Count
I like knowing how many words are on a post, or a post summary. -
Reddit-style Like/Dislike
I absolutely hate having trolls on some of the blogs I go to, but it’s too easy to feed to trolls when all you want to do is get rid of them. Being able to both like and dislike posts and comments would be a great way to users to be involved both with the blog and with each other (obviously, this should be restricted on a post-by-post basis to view-by-all, by-specified-groups, or by-none; or you could just turn the feature off on some posts). -
Protected Posts and Access Control
Yeah, this starts to blur the line between forum and blog, but to be honest, there are some blog posts where I’d love to prevent the entire Internet from looking at them. I’d love to protect posts either by a defined password or even by user levels (sfGuard would work great for this). Perhaps even apply these permissions to the categories/tags to automatically assign protection to posts. -
Ajax
In another word: bling. I want the backend and the frontend to be a little easier to use by default and look nice. Symfony includes support for a number of good Javascript libraries. -
Configuration
There are two levels of configuration that would be available to this solution: there would be the administrative options like themes, spam control, and others. However there are application options that are also important: use ajax or not? use feeds or not? These are things that are likely just set once and never set again. As such, who cares if they are removed from the user and are placed into a symfony configuration file? Simplifying the backend by not placing EVERYTHING in it would go a long way in my opinion, so I will need to define what I feel should be configurable by the user and I will also need to define WHERE they can configure it.
Things I do not need:
-
Pages
Since we’re NOT using WordPress to handle everything, any other pages could be handled by adding a module to the application. -
Cache
I know that symfony caching could be a lot better, but it’s still pretty good and it’s standard in the framework. I don’t see a need to add it. -
Contact Forms
We’re working with an entire framework here, complete with the idea that we’ll be delivering other content besides a blog. If I were going to provide a complete blogging solution simply based on symfony (instead of a plugin), then this would make sense. But in regards to this plugin, if you want a contact page, build it yourself!
Things I think would be plain awesome but have no clue how:
-
Gears or HTML5
Using Google Gears is an awesome way of interacting with a web application. WordPress has the ability to interact with Gears for the backend area – this speeds things up IMMENSELY. However, Google has publicly announced with the advent of Google Wave that they really don’t see a future for Gears when all of their needs can be handled with tools in HTML5. It would be awesome to beat WordPress to the gate by somehow implementing HTML5 tools to help speed up the backend (or possibly even the frontend). -
Alternate Login Options for Admin and Comments
This is more of an issue regarding sfGuardUser, but it would be fantastic to allow a user to log into the site using FacebookConnect or OpenId. If anything, it would allow for specific user preferences regarding comments. This may be a bit of overkill for my own needs, but if I ever planned on opening a multi-user (or even, perhaps, a multi-blog) plugin I think this would be a great selling point. -
Mobile Solution
Again, this may not be a strictly blogging feature, but it’d be nice to figure out how to deliver the application in a mobile format for Androids and iPhones. -
PHP Code within the Post
This maye be the worst idea in the history of the world – to be honest it’s a security nightmare. However, it’d be pretty awesome sometimes to not just dynamically serve posts, but to have the post content be dynamic. It’d be fun to look further into this. -
Detailed Stats
Keeping track of detailed visitor statistics would help in building some fun features (most/least popular posts, most/least popular comments, etc). -
iTunes/Podcasting Help
It’d be great to ensure that you can deliver an accurate iTunes podcasting feed from the app without devoting every post to the podcast.
In looking at this closely, almost all of it could be handled VERY easily by existing symfony plugins or could be created very easily. There are a few difficulties, however, the largest of which is obviously the theme integration. However, if I could get it to work (and I have a few ideas) then the largest reason for me to use WordPress goes away and I can be happy in having a tightly integrated blogging solution available for my projects.
Over the next few weeks I will be working on trying to create this solution using the symfony framework. I’ll try to document my progress and, hopefully, my success.