{"id":24352,"date":"2019-07-25T21:45:13","date_gmt":"2019-07-25T13:45:13","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=24352"},"modified":"2022-10-18T20:12:03","modified_gmt":"2022-10-18T12:12:03","slug":"staging-wordpress-development","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/","title":{"rendered":"How to Setup a Staging Environment for WordPress Development"},"content":{"rendered":"<p>Usually we would start developing a website in a local server. Then, we upload it to a <em>staging<\/em> site, and after everything are confirmed, we push the website to the <em>live<\/em> server. As simple as that sound, developing a website <strong>can be a very lengthy process<\/strong>.<\/p>\n<p>In this post, we will see <strong>how to deploy and configure these stages effectively<\/strong> when developing for WordPress using a handy plugin called <a href=\"https:\/\/wordpress.org\/plugins\/wp-local-toolbox\/\" target=\"_blank\" rel=\"noopener\">WP Local Toolbox<\/a>.<\/p>\n<p>Once the plugin is activated, it exposes a number of <a href=\"https:\/\/www.php.net\/manual\/en\/function.define.php\" target=\"_blank\" rel=\"noopener\">PHP constants<\/a>. To name but a few, these constants will let us know if we are currently <strong>in a live site or in local site<\/strong>, ensure unnecessary plugins in certain stage <strong>remain deactivated<\/strong>, and notify us when <strong>new content has been added<\/strong> in the live site.<\/p>\n<h2>Development Stage<\/h2>\n<p>This is where we start. We build our website in a localhost: a web server running in our computer. If you are using OS X, you can easily set one up with MAMP. Windows users have a few more options such as MAMP (for Windows), WAMP, and XAMPP.<\/p>\n<p>At this stage, you can use development tools like <a href=\"https:\/\/www.hongkiat.com\/blog\/codekit-2\/\">Codekit<\/a>, and <a href=\"https:\/\/www.hongkiat.com\/blog\/gulp-vs-grunt\/\">Grunt or Gulp<\/a>. You can work together with your colleagues using Git version control; you can also freely conduct some experiments, and safely make errors along the way.<\/p>\n<p>In  the development period, I  encourage you to enable the <code>WP_DEBUG<\/code> and to install a few WordPress plugins such as <a href=\"https:\/\/wordpress.org\/plugins\/query-monitor\/\" target=\"_blank\" rel=\"noopener\">Query Monitor<\/a>, <a href=\"https:\/\/wordpress.org\/plugins\/rtl-tester\/\">RTL Tester<\/a>, and <a href=\"https:\/\/wordpress.org\/plugins\/user-switching\/\">User Switching<\/a> in addition to the plugins that we would deploy in the live site. These few extra plugins are meant to <strong>facilitate the development<\/strong> as well as <strong>testing process<\/strong>. That said, we will not activate these plugins at the staging or  live site.<\/p>\n<p>Open the <code>wp-config.php<\/code>, and add the following line after <code>define('WP_DEBUG', true);<\/code>.<\/p>\n<pre>\r\ndefine('WP_DEBUG', true);\r\ndefine('WPLT_SERVER', 'dev');\r\n<\/pre>\n<p>This line marks our WordPress install in localhost as \u201cdevelopment\u201d. When you log in to the WordPress dashboard, you will notice that the Admin bar, by default, now returns green with the server stated as <code>DEV SERVER<\/code>.<\/p>\n<p>Setting it <code>dev<\/code> enables the \u201cDiscourage search engines from indexing this site\u201d option to prevent the site accidentally being indexed in Search Engine, although it is only accessible in our computer.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg\" height=\"480\" width=\"700\" alt=\"WordPress dashboard in local\"><\/figure>\n<p>If you do not like the default green, you can always change it by defining <code>WPLT_COLOR<\/code>. The color can be defined with a color keyword or with the Hex format as shown below.<\/p>\n<pre>\r\ndefine('WPLT_COLOR', '#7ab800');\r\n<\/pre>\n<p>Additionally, you might also want to forcefully deactivate a few plugins that are not needed during development, like the caching plugin, backup plugin and <a href=\"https:\/\/wordpress.org\/plugins\/akismet\/\" target=\"_blank\" rel=\"noopener\">Akismet<\/a>.<\/p>\n<p>To do so, specify each plugin in an array with <code>WPLT_DISABLED_PLUGINS<\/code>.<\/p>\n<pre>\r\ndefine('WPLT_DISABLED_PLUGINS', serialize(\r\n  array(\r\n    'w3-total-cache\/w3-total-cache.php',\r\n    'akismet\/akismet.php',\r\n  )\r\n));\u00c2\u00a0\r\n<\/pre>\n<h2>\u201cStaging\u201d Stage<\/h2>\n<p>The \u201cstaging\u201d site is where we test our site. Ideally it should be in an environment that is <strong>closely mimics<\/strong> (the content, the server specification, and etc.) <strong>the live site in<\/strong> order to <strong>catch  bugs and errors<\/strong> that we may have missed in the development stage.<\/p>\n<p>The site usually should only be accessible to some people including the clients, to show them the final version of the websites.<\/p>\n<p>Some plugins are better deactivated such as the plugins that we have used in the development stage, a caching plugin, and a backup plugin. Staging site could be set in a subdomain, for example, <code>staging.coolsite.com<\/code> or in a separate domain like <code>coolsitestaging.com<\/code>.<\/p>\n<p>We define the staging site in <code>wp-config.php<\/code> as follows.<\/p>\n<pre>\r\ndefine('WP_DEBUG', true);\r\ndefine('WPLT_SERVER', 'testing');\r\ndefine('WPLT_DISABLED_PLUGINS', serialize(\r\n  array(\r\n    'w3-total-cache\/w3-total-cache.php',\r\n    'akismet\/akismet.php',\r\n    'debug-bar\/debug-bar.php',\r\n    'debug-bar-extender\/debug-bar-extender.php',\r\n    'debug-bar-console\/debug-bar-console.php',\r\n    'simply-show-ids\/simply-show-ids.php',\r\n    'monster-widget\/monster-widget.php',\r\n\t\t'theme-check\/theme-check.php',\r\n\t\t'wordpress-beta-tester\/wp-beta-tester.php',\r\n\t)\r\n));\r\n<\/pre>\n<p>We now set the server as <code>staging<\/code> or <code>testing<\/code>. The Admin bar color should now turn orange.<\/p>\n<p>At this stage, we can also deactivate <strong>a few plugins that we use for development. <\/strong>We keep a few other development plugins activated and <code>WP_DEBUG<\/code> enabled as we need to catch  errors while testing in the staging server.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-staging.jpg\" height=\"480\" width=\"700\" alt=\"Staging environment\"><\/figure>\n<h2>Live Stage<\/h2>\n<p>This is the final stage where we publish our site in a live server and let everyone and anyone see the website. In this stage, we should also <strong>deactivate all the plugins for developments<\/strong> and finally <strong> activate caching and backup plugins<\/strong> among other things.<\/p>\n<pre>\r\ndefine('WP_DEBUG', false);\r\ndefine('WPLT_SERVER', 'live');\r\ndefine('WPLT_DISABLED_PLUGINS', serialize(\r\n  array(\r\n    'developer\/developer.php',\r\n    'debug-bar\/debug-bar.php',\r\n    'debug-bar-extender\/debug-bar-extender.php',\r\n    'debug-bar-console\/debug-bar-console.php',\r\n    'simply-show-ids\/simply-show-ids.php',\r\n    'regenerate-thumbnails\/regenerate-thumbnails.php',\r\n    'rewrite-rules-inspector\/rewrite-rules-inspector.php',\r\n    'rtl-tester\/rtl-tester.php',\r\n    'user-switching\/user-switching.php',\r\n    'monster-widget\/monster-widget.php',\r\n\t\t'theme-check\/theme-check.php',\r\n\t\t'query-monitor\/query-monitor.php',\r\n\t\t'wordpress-beta-tester\/wp-beta-tester.php',\r\n\t)\r\n));\r\n<\/pre>\n<p>The live stage Admin bar <strong>defaults to red<\/strong> (this can be changed). Keep an eye for new content in the live server to <strong>keep the testing server database updated with the new content as in the live server<\/strong>; it will make testing more accurate, and ensure that the new contents are displayed OK.<\/p>\n<p>Add the following line in the live server <code>wp-config.php<\/code> to do so.<\/p>\n<pre>\r\ndefine('WPLT_NOTIFY','me@outlook.com');\r\n<\/pre>\n<p>Once set, we will receive notification through email when our client add new content (posts and pages) in the live server. When they do, copy the content database from live.<\/p>\n<p>If your <code>testing<\/code> and <code>live<\/code> server are hosted in the same server, go to phpMyAdmin. Then, select  the <strong>wp_posts<\/strong> database and select the <strong>Operations<\/strong> tab. Within the <strong>Copy table to (database.table)<\/strong> box, select the staging site database and make sure that the <strong>Add DROP TABLE<\/strong> option is checked so that it will overwrite the existing database.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-copy-database.jpg\" height=\"381\" width=\"700\" alt=\"Copy database to another database\"><\/figure>\n<p>That\u2019s it, we now have nicely organized stages for developing a WordPress site. I realize that many of you have your own style of workflow so feel free to share your best workflow when dealing with \u201cstaging\u201d, and what tools you are using.<\/p>","protected":false},"excerpt":{"rendered":"<p>Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the website to the live server. As simple as that sound, developing a website can be a very lengthy process. In this post, we will see how to deploy&hellip;<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[49],"tags":[4663,2989,252],"topic":[4520],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Setup a Staging Environment for WordPress Development - Hongkiat<\/title>\n<meta name=\"description\" content=\"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Setup a Staging Environment for WordPress Development\" \/>\n<meta property=\"og:description\" content=\"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-25T13:45:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-18T12:12:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"How to Setup a Staging Environment for WordPress Development\",\"datePublished\":\"2019-07-25T13:45:13+00:00\",\"dateModified\":\"2022-10-18T12:12:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/\"},\"wordCount\":843,\"commentCount\":11,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/staging-wordpress-development\\\/wp-local-dev.jpg\",\"keywords\":[\"ad-divi\",\"wordpress installation\",\"WordPress Tips\"],\"articleSection\":[\"WordPress\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/\",\"name\":\"How to Setup a Staging Environment for WordPress Development - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/staging-wordpress-development\\\/wp-local-dev.jpg\",\"datePublished\":\"2019-07-25T13:45:13+00:00\",\"dateModified\":\"2022-10-18T12:12:03+00:00\",\"description\":\"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/staging-wordpress-development\\\/wp-local-dev.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/staging-wordpress-development\\\/wp-local-dev.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/staging-wordpress-development\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Setup a Staging Environment for WordPress Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Setup a Staging Environment for WordPress Development - Hongkiat","description":"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/","og_locale":"en_US","og_type":"article","og_title":"How to Setup a Staging Environment for WordPress Development","og_description":"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the","og_url":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2019-07-25T13:45:13+00:00","article_modified_time":"2022-10-18T12:12:03+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg","type":"","width":"","height":""}],"author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"How to Setup a Staging Environment for WordPress Development","datePublished":"2019-07-25T13:45:13+00:00","dateModified":"2022-10-18T12:12:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/"},"wordCount":843,"commentCount":11,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg","keywords":["ad-divi","wordpress installation","WordPress Tips"],"articleSection":["WordPress"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/","url":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/","name":"How to Setup a Staging Environment for WordPress Development - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg","datePublished":"2019-07-25T13:45:13+00:00","dateModified":"2022-10-18T12:12:03+00:00","description":"Usually we would start developing a website in a local server. Then, we upload it to a staging site, and after everything are confirmed, we push the","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/staging-wordpress-development\/wp-local-dev.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/staging-wordpress-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Setup a Staging Environment for WordPress Development"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-6kM","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/24352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=24352"}],"version-history":[{"count":3,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/24352\/revisions"}],"predecessor-version":[{"id":63042,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/24352\/revisions\/63042"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=24352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=24352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=24352"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=24352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}