I had a client ask me the other day why I've switched over from Wordpress to concrete5 and I had to think about it.
The last site I built with Wordpress made heavy use of custom post types. Here is what I found but I'm interested in hearing feedback from other people who've used both CMSes because I did find it hard to articulate to my client.
In general I found I had a **lot less** code to write and maintain with concrete5 and that clients have an easier time learning to use concrete5.
List Pages
In concrete5, any page can be made into a list view by adding the PageList block (or by hard-coding it into your template)
In Wordpress, you can make an "archive page" or you can code it into a template by using the Wordpress loop. But once you make the template, you have to go into the admin to attach the template to a given Wordpress Page or Archive. Then you have to tell the user to try and not edit this page because you are using it as a list view (actually).
Also, you can make list views of specific taxonomy types (say, you have a taxonomy called "menu" and you want to create a page that lists all "appetizers"). However, the last time I tried this, trying to make the permalinks work with these custom list-views landed me in a zone where I could not make my perma links work for days.
In concrete5, your permalink name is structured by the title of your page. So if you change your page title, everything updates nicely - page title, permalink, and links.
Custom Content
In concrete5, you can make custom content by using custom attributes. You can then grab a specific page and it's attributes by using built-in concrete5 methods.
In Wordpress, you can do a similar thing with custom posts. However, while concrete5 has table rows for each attribute, with custom posts the data is serialized and then put into the database under the "options" table. I suspect this slows down the site somewhat.
Also, by using composer and addons such as designers block, in concrete5 it seems easy enough to add "custom content textareas" and so on into the admin system.
In Wordpress, you have to do this by "hooking" into the admin with methods that have a large amount of parameters, i.e.
add_meta_box("home", "Home", "home_values", "page", "normal", "low");
Permissions
Permissions in concrete5 is pretty much point-and-click. You can create groups and through pointing and clicking, you can turn on or off access to various pages and blocks.
In Wordpress, you have to hook into the admin bar method and then "exclude" certain users based on their level of access (which is a number from 1-10):
add_action( 'wp_before_admin_bar_render', 'remove_admin_bar_links' );
function remove_admin_bar_links() {
global $wp_admin_bar;
if ($current_user->user_level < 10) {
// write exclude code here
}
I'd love to see you buff it out just a tad more and we'd add it to the Switch and Learn section over here:
http://www.concrete5.org/documentation/introduction/switch-and-lear...