{"id":32,"date":"2019-10-14T12:12:00","date_gmt":"2019-10-14T15:12:00","guid":{"rendered":"https:\/\/kylekelly.com\/?p=32"},"modified":"2022-12-27T14:15:31","modified_gmt":"2022-12-27T18:15:31","slug":"wordpress-launch-list","status":"publish","type":"post","link":"https:\/\/kylekelly.com\/posts\/wordpress-launch-list\/","title":{"rendered":"WordPress Launch List"},"content":{"rendered":"\n

Let\u2019s discuss what it takes to launch a typical WordPress site.<\/p>\n\n\n\n

For this example we\u2019ll assume you have a development site up and running that is now complete and ready to go live.<\/p>\n\n\n\n

We\u2019ll also assume that you\u2019re not using any fancy deployment process and instead you\u2019ll be launching on a fairly typical shared WordPress hosting environment where you have access to SFTP and cPanel.<\/p>\n\n\n\n

Nothing good comes of rushing this process. Take your time and double check all of the steps. If you\u2019re doing this for a client, warn them that you should plan the launch days in advance and be prepared for it to take a few hours once the process begins.<\/p>\n\n\n\n

Steps<\/h2>\n\n\n\n

Halt all changes<\/h3>\n\n\n\n

Make sure you have agreement from all of your site editors that no more changes will be made on the dev site until the launch is complete. If they keep editing you will need to restart your launch process or their changes will be lost.<\/p>\n\n\n\n

Backup backup backup<\/h3>\n\n\n\n

Now is the time to grab a backup of your dev site files and database. If there is a live site that you are replacing, do the same for it. Make sure these backups exist before proceeding.<\/p>\n\n\n\n

For the files backup, use SFTP\/rsync\/FTP(last resort) to download all of the files for the site off the server.<\/p>\n\n\n\n

For the database use your cPanel to gain access to phpMyAdmin and use the export functionality to download all of your tables. Make sure you export to file and select gzip for the compression.<\/p>\n\n\n\n

Convert the database<\/h3>\n\n\n\n

Create a duplicate of your dev site database .sql export file.<\/p>\n\n\n\n

If you have access to the WordPress CLI<\/a> for your dev site it will be invaluable.<\/p>\n\n\n\n

Use wp search-replace 'devsite.url' 'livesite.url' --export=renamed.sql<\/code><\/p>\n\n\n\n

This is particularly useful as WP-Cli will recalculate any serialization<\/a>.<\/p>\n\n\n\n

Remember that the WP-Cli will not export or rename records that are in the database but are not WordPress tables.<\/p>\n\n\n\n

Upload the files<\/h3>\n\n\n\n

Next part is straightforward. Make sure all of the dev site files are now on the live site. Update the wp-config.php file to use the new live site database name and credentials.<\/p>\n\n\n\n

Upload the database<\/h3>\n\n\n\n

Using phpMyAdmin or whatever interface your web host provides, upload the dev site database .sql export.<\/p>\n\n\n\n

Next if you have it, upload the renamed.sql file output from WP-Cli.<\/p>\n\n\n\n

If you have done both of these, you\u2019re probably in pretty good shape, but just to be extra sure, download an export of this database now.<\/p>\n\n\n\n

Then using your favourite text editor, search replace for devsite.url<\/code> and livesite.url<\/code> to catch any reference that may be remaining.<\/p>\n\n\n\n

Upload this updated database export to your site and your database conversion should be complete.<\/p>\n\n\n\n

You\u2019re live<\/h3>\n\n\n\n

At this point your site should be live and working, but there\u2019s a few after launch steps that you should review.<\/p>\n\n\n\n

Confirm site accessible<\/h3>\n\n\n\n

Check that your \/robots.txt and your WordPress settings are not preventing search engines from indexing your site. You may have put restrictions on during the development phase that you no longer should have. Also confirm you do not have any htaccess\/htpasswd<\/code> password protection still enabled for the live site too.<\/p>\n\n\n\n

Check your analytics<\/h3>\n\n\n\n

Confirm you\u2019re receiving data from any 3rd party service that is included on your site. Check Google Analytics or similar to make sure you\u2019re seeing traffic.<\/p>\n\n\n\n

Monitor the situation<\/h3>\n\n\n\n

Keep an eye on the site. No launch ever goes perfectly. There will always be little things you discover you want to change after the launch. That\u2019s normal, just stay on top of it.<\/p>\n\n\n\n

Use redirect plugin<\/h3>\n\n\n\n

Use the WordPress Redirection<\/a> plugin to monitor the 404 records on your new site and create redirection rules to point to where this content may be found on your new site.<\/p>\n\n\n\n

That\u2019s it<\/h3>\n\n\n\n

Congrats, you\u2019re now live and monitoring the situation. It\u2019ll get easier each launch.<\/p>\n\n\n\n

Now may be a great time to look into alternative deployment procedures using git or staging steps provided by hosting providers like pantheon<\/a> or wpengine<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"

Let\u2019s discuss what it takes to launch a typical WordPress site. For this example we\u2019ll assume you have a development site up and running that is now complete and ready to go live. We\u2019ll also assume that you\u2019re not using any fancy deployment process and instead you\u2019ll be launching on a fairly typical shared WordPress […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[9],"_links":{"self":[{"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/posts\/32"}],"collection":[{"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":1,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":33,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/posts\/32\/revisions\/33"}],"wp:attachment":[{"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kylekelly.com\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}