So we have been working for the last few months at creating an enterprise level wordpress install that will host thousands of unique blogs. Each blog (or site as I refer to them as) will have it's own theme, settings, plugins (with some network plugins), robtos.txt, sitemap.xml, mapped domain, etc... In essence we are just using wordpress multisite as a site administration and deployment manager.
Some of the challenges we faced were:
- Getting files to be served from the root, solved with variable .htaccess trickery
- Having a master template site to start from, solved with @andrea_r 's WP Replicator
- Network and site specific user management, solved with @andrea_r's Network Roles
- Domain Mapping, solved with MU Domain Mapping
- Server architecture: Solved with 2 load balanced lamp stacks, with 2 memcache servers, and a slew of virtual scaleable databases in master slave configurations
- We also have been working with @bwilliams and @bmess at webdevstudios on some custom plugins for SEO, maps, form components, etc. (These guys have been really awesome! )
The last issue that we face is within our workflow. We have 2 environments, a certification (or build) environment, and a read only production (or live) environment. With more than 100 people touching these sites daily, we want to make sure that doing redesigns or major content overhauls does not impact our prod environment and also allows us to fully view a working site before making all the changes live. This also means that all changes will be made and tested in a build environment before pushing changes live (including theming, content, media uploads, site settings etc)
With that in mind, we have hypothesized a workflow that I would like to get some input on or better yet examples of plugins that already do this. Basically we would like to build a function (stored procedures, shell scripts, php, whatever) that will check our cert version of the site for changes and then push those changes to the prod environment all at once to reduce DB calls, but also have some node based publishing features, publishing single pages to prod if needed.
Challenges I see with this:
- Media uploads? How do we ensure that media files are moved and linked correctly
- Site settings: how can i view my site in cert ie. site1.cert-maindomain.com, but when it moves know to change the site url back to the prod url which will be site1.maindomain.com mapped to customdomain.com
- How can I manage the theme in this way? I was originally thinking some git or svn shell scripts to push theme changes to its sister locations in prod
i know there are other issues here... Anyone care to comment?