Support » Everything else WordPress » Permalinks & Test Strategies

  • C Coffey


    Probably don’t appear linked from the off but I think they are.

    Examining wordpress for suitability for a project in the last 24 hours, one thing is stepping out as a potential road-block to adoption.


    There doesn’t appear to be a consistently presented/understood strategy/feature set for testing a site in a sandbox/test environment and then publishing it (complete or delta) to production. What I would want to be able to do is have:

    – A complete test environment (domain, database, html, etc)
    – Possibility of additional test legs/phases
    – A complete production environment
    – Inherent understanding within WordPress about test V production (etc)
    – – Ability to configure the test setup inside the product
    – A push button “publish” feature that can move content from one leg to the next (ie: publish all of my changes to production)
    – Avoid necessity, but have the possibility, to have a local (workstation based) test environment [where desirable].

    If 100% of the content is inside MySQL (rather than a mix of fs files and database content), one suspects it should be possible to have multiple databases or versioning within the database and use scripts or backup/restore to migrate the database content from one leg to the next (eg: backup production, backup test, restore rest into production, have production backup as fall back). A full database based solution could prove to be expensive/time consuming as a site grows.

    I’ve seen suggestions for people to use and, but not clear what the ‘publish’ strategy is (some of the posts I found go back to 2006, so also unclear how current they are). If it involves ‘hacking’ then it’s not a very good solution (granted it could all be scripted if someone understands the solution and it’s internals well enough, but I think this is what wordpress strives to avoid!).

    A problem with domains is that the links seem to cause problems. Is wordpress saving hard links in the database or generating them on the fly based on some configuration of what the primary domain is for a web site? The full links hierarchy should continue to work whether the site is in a test domain or a production domain.

    Another thing that needs to be managed here:
    – Authorisation/profile data for users accessing sites. While page content possibly needs to migrate forward, data collected during the production running of the server needs to remain in place, and, it may in fact be desirable to be able to refresh test from production before making changes.

    I’d be interested in the July 2011 position on this topic and whether or not there is some reasonably simple solution for me to install WP on my web server and configure it (or instances of it) so that I can easily manage a test and prod. domain.

Viewing 5 replies - 1 through 5 (of 5 total)
  • Moderator Ipstenu (Mika Epstein)


    Lead Plugin Wrangler

    There are ways to do it, and I can’t find the write up someone gave for his methodology.

    I would posit that WP content should be excluded from a dev/prod environment. You’re expected to write your posts in WordPress, after all. The use of a dev environment is generally for code design. Plugin testing, theme testing, etc etc.

    C Coffey


    Seems some of the issues here are:

    – Word press has more than one method of storing and managing content (ie: mysql and flat file system, I DO NOT like that …).
    – Word press allows configuration of the domain/path but this has of necessity to exist in multiple places.
    – Absolutely links are preferable in certain situations (see useful analysis here
    – But, in my view an absolute link should be presented outwardly by the site [generated] with reference to a single point of reference for what the site root domain and path are.
    – The domain and path should not (IMO) be embedded throughout the content of the site in the tool itself. To the outside world, they should of course appear consistently to be fully qualified.

    I have seen several hacks for fixing up a site intended for one domain/subdomain/path to work in another. Assumably that involves updating base config. data in WP, both in the FS and DB, but also searching and replacing for links in both the FS and DB (and including re-tailoring WP files, eg: wp-config.php). This is hardly elegant.

    Given how things stand today, I’m wondering is the best solution for this to actually make a test site ‘believe’ it is the production site, ie:
    – Create a batch file/script that adds/removes an entry in (for example the windows case) for mydomain in \windows\system32\drivers\etc that actually resolves “mydomain” back to “localhost” so that the site runs locally as if it were at “mydomain”.
    – Taking that one step further, create an isolated VM sandbox (Linux) with Apache/MySQL/PHP, etc, where the sandbox is isolated and believes it is “mydomain” but where the test site files are actually mounted in from the host to a location (as appropriate) in the guests file system.

    I’m on day 2 of this exercise, so it’s unclear to me (for example) if the ability to override default DNS routing other than at OS level is a feature of web servers in general, to support testing, but I don’t think it’s a long stretch that this is true. So, even without hacking routing, or creating a deluded VM, is it possible to configure Apache, or IIS express, or Expression Web Development Server, to subvert a DNS request and route it back to localhost?

    Some good points were made in other posts – you never want to promote test ‘data’ to production – but – production data is a very good source of test data [subject to business need to know/confidentiality agreements, etc].

    In this case, it should also be possible to subvert the domain for the WP production site, but not for the production mySQL database. Now, that would be suicide for a corporate application, but not for someone developing a blogging web site. So, in theory it should be possible to subvert WP, but not mysql, assuming they are not sharing the same domain name.

    What I need to check, is, does subversion of a domain also imply automatic subversion of subdomains, ie:

    But, it given helm and other VWS it’s not a long shot to use different primary domains for WP and DB, ie:

    Finally, whilst we could point a ‘dev’ copy of the FS artifacts at a ‘prd’ copy of the DB, different WP themes suggest a need for different internal structures. So, it is probably not always feasible to test ‘dev’ themes against ‘prd’ data. The other issue I need to address here is a push button method of refeshing a ‘dev’/’tst’ DB from the ‘prd’ DB.

    Will update if I find anything useful on the above points.

    Moderator Ipstenu (Mika Epstein)


    Lead Plugin Wrangler

    It’s WordPress (no space, capital P)

    Word press has more than one method of storing and managing content (ie: mysql and flat file system, I DO NOT like that …).

    Kind of. All your DATA is on the database, except for images, which is true of most CMS tools. The wp-config file and the themes and plugins are NOT data, they’re configuration.

    Word press allows configuration of the domain/path but this has of necessity to exist in multiple places.

    Two places. And you can even hard code it into your wp-config file. YES WordPress saves URL paths for images and links as absolute paths in your posts, but that’s a very easy switch if you need to change ’em.

    There’s been a LOT of back and forth about relative URLs, but honestly, I don’t see it changing any time soon since it’s got to be done in a way that is both backwards compatible AND future proof.

    But really it boils down to what are you using your dev environment FOR

    If you’re using it to test design, layout, plugins and settings like that, you don’t need to worry about domain names. If you’re using it to test everything, including post content, then you’d going to need to play with servers and set ’em up so they have the same name (or name them,, and have a script search/replace for .com on ‘promotion.’).

    This is why I said data is separate from design 🙂 You don’t have to have both in a dev environment. You just need some data. Doesn’t need to be the live data for most situations.

    C Coffey


    Concur: And just so you don’t think we’re debating, I think the combination of my questions and your answers is probably going to prove very useful to people who have struggled with this. We have to remember, a good part of the community are not technical, and probably don’t want to be.

    Concur on separation of code, data, and configuration. Point remains pulling the prd DB back to dev gives a very representative set of content to experiment with. For some elements of look and feel you need sufficient quantities of articles, categories, pages, etc, to get it right (right being how you want it).

    Of course, instead of users having to backup their content folders, MySQL DB, and do migration hacking, it would be really useful if WordPress had a ‘backup up the site’ option which captured the MySQL, content, themes and WordPress code all in one backup. I see the feature isn’t native, but there are plugins to take care of much of this, so, no major problem. Not sure if those plugins take care of the URL customisation requirements, will find out soon enough though.

    Another unknown for me:

    If I install a theme, and customise it, and then install another theme, and customise it, are the customisations I make to both themes all saved inside the DB, ie: I can flip from one to the other?

    When I say ‘customise’, I mean, using the settings provided by the theme inside the dashboard, not hacking of theme PHP/HTML/CSS do extend it.

    Can I experient with a new theme ‘offline’ some how and then activate it?

    Possible to move just the theme settings from ‘dev’ to ‘prd’ so that I can reskin by live site after testing out the theme in development?

    These are things I can suck-and-see in the next few days, though it will probably be helpful to other people to have the answers here in the forum.

    I am too struggling with this problem.

    I will add and say – DB Data is not just content. DB data includes configuration settings, permalinks, and plugin data (for example form configuration, widget settings etc), so it’s really required on a test environment.

    Today I am using a HOSTS file to switch back and forth between test and production. Problem is, let’s say I want to show the client the site, I need to make him edit his HOSTS file which isn’t always an option.

    I’ve been looking for a Proxy server script that can emulate HOSTS file behavior online, which then I can send a link to users. Does someone know such an application/service?

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Permalinks & Test Strategies’ is closed to new replies.