I’ve been using WordPress as a CMS for about 7 months now with the following core features:
- Navigation Tree: Wp_list_pages for easy navigation of pages
- Solr search engine: indexing posts only (because some pages are duplicated in the tree)
- Pages that embed posts. Just about every page contains an embedded post. The reason is so that I can reference a post in multiple places on the Tree Navigation without having to edit each page individually.
Thus, my process for managing my CMS is to:
- Create a post of new content
- Select taxonomies (for use with Solr search filtering)
- Publish post. Upon publishing, a page is automatically created with the embedded post with a parent of “Standby”. This saves me some time.
- Go to Standby to see my pending pages and organize in my tree hierarchy (via CMS Tree Page View). I will duplicate the page if I wish to have the embedded post featured in multiple places in the tree.
Does my process meet my CMS needs? Yes. Does it effectively double my MySQL data? Yes. Is a page with an embedded post the best solution to creating an effective hierarchical CMS? I’m not sure.
It would be nice to organize posts in a tree hierarchy for the convenience of site navigation on the front end, without having to create a page. It is also essential that when I edit the embedded post, all pages holding that post are updated.
Is there a better way of creating a hierarchical tree and what is the reason behind posts not being hierarchical?
As you’re probably already aware, WordPress is designed with two main content types: Pages and Posts (see also http://en.support.wordpress.com/post-vs-page/)
The very design of Posts is to not be hierarchical. And the nature of Pages is to be hierarchical. Posts are to be part of a blog. Blogs are almost always ad-hoc in organization. Thus there needs to be many ways to navigate those posts. Plus there isn’t a parent > child relationship. Each new post is considered it’s own entity, though it can be tagged or categorized to create relationships with other posts.
Another way to think of it is:
Posts = Blog
Pages = CMS
It’s important to understand that since you’re using a pre-existing CMS, you are taking a Bottom Up approach. This means if the core functionality doesn’t work for you, it’s best to find another solution that meets your needs rather than try to hack the basic principles of a CMS that doesn’t work the way you want it to.
You can create Categories to provide some pseudo-hierarchicy to posts. With some of these core concepts, it’s easiest to try and use best practices. That will also create better results long-term. Making it easier to maintain, update and modify.
WordPress is also designed for SEO. I realize for an intranet that’s of no use to use, but again that’s what it’s designed to do. Because of this, it doesn’t allow you to duplicate content unless you force it to.
What I would do is:
I would only ever put the content in one place and I would organize the content so that that is the case, and that it only ends up in the navigation one time. It’s okay to have a page reference other pages.