{"id":4838,"date":"2014-02-11T17:01:10","date_gmt":"2014-02-11T22:01:10","guid":{"rendered":"https:\/\/wpshout.com\/?p=4838"},"modified":"2015-02-18T16:24:00","modified_gmt":"2015-02-18T16:24:00","slug":"wordpress-front-controller","status":"publish","type":"post","link":"https:\/\/wpshout.com\/wordpress-front-controller\/","title":{"rendered":"WordPress and the Front Controller Design Pattern"},"content":{"rendered":"<p>Computer programmers love to think about systems. In doing that, they generalize how they work and how we can classify them. So you&#8217;ll find lots of people talking about &#8220;design patterns&#8221; \u2014 both loved and hated ones \u2014 that are common across the architecture of many different software systems.<\/p>\n<p>One of my favorite patterns \u2014 having faced down more than a few legacy PHP apps that would have been much easier to change if they&#8217;d used it initially \u2014 is the Front Controller pattern. And WordPress uses it to powerful effect. Understanding the front controller pattern, how WordPress uses it, and what effect that has is really useful and helps you wrap your head around some other things about WordPress, so we&#8217;ll dive in.<\/p>\n<h2 id=\"whatisthefrontcontrollerpattern\">What is the Front Controller Pattern?<\/h2>\n<blockquote class=\"pullquote alignright\"><p>Like a house with only one door, the front controller is the only way that people are allowed to talk to and get data from an application.<\/p><\/blockquote>\n<p>Put simply, the front controller pattern is observed in a system that only has one entry point. Like a house with only one door, the front controller is the only way that people are allowed to talk to and get data from an application. This pattern is popular on the web because it makes it easier to make good URLs (in the WordPress world we like to call that &#8220;pretty permalinks&#8221;) and saves us from repeating ourselves in many different scripts building up the same structure we need to use to respond to a web request (a request for data from our website).<\/p>\n<p>Just for clarity, the &#8220;opposite&#8221; pattern to the front controller is the <a href=\"http:\/\/www.martinfowler.com\/eaaCatalog\/pageController.html\">&#8220;page controller&#8221;<\/a> which is actually how the administration section of WordPress is handled. In a page controller system, each thing that person might want is handled by a separate script or web page.<\/p>\n<p>I&#8217;m not gonna dive too deep into the specifics of each as concepts here. But there are a number of good resources on the net about these patterns generally, I recommend <a href=\"http:\/\/www.uchithar.net\/2010\/03\/page-vs-front-controller.html\">this comparison of the two<\/a> from Uchitha Ranashinghe (though the images are broken the text table is a great comparison), and the definitions from Microsoft of the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms978723.aspx\">front<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ff649595.aspx\">page<\/a> controller patterns.<\/p>\n<h2 id=\"wordpressurlsandthefrontcontroller\">WordPress URLs and the Front Controller<\/h2>\n<p>If you&#8217;ve spent much time in WordPress you&#8217;ve probably realized that the theme doesn&#8217;t have a file in it for every page on your site, and that your theme isn&#8217;t just responding with raw pages to the front of your site. I remember when I was just getting started with it, I wanted to put a raw HTML page into my theme and have it accessible on my site. And it didn&#8217;t work. Now I know that&#8217;s because of the front controller that WordPress uses.<\/p>\n<figure id=\"attachment_4840\" aria-describedby=\"caption-attachment-4840\" style=\"width: 300px\" class=\"wp-caption alignright\"><img data-opt-id=17151533  data-opt-src=\"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:300\/h:225\/q:mauto\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/04\/tracks-in-snow-converge-300x225.jpg\"   decoding=\"async\" class=\"size-medium wp-image-4840 \" src=\"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:300\/h:225\/q:eco\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/04\/tracks-in-snow-converge-300x225.jpg\" alt=\"tracks-in-snow-converge\" width=\"300\" height=\"225\" \/><figcaption id=\"caption-attachment-4840\" class=\"wp-caption-text\">Multiple paths lead to a single place<\/figcaption><\/figure>\n<p>We all know that there are many different ways the URLs of our WordPress site can look. You&#8217;ve probably seen the &#8220;ugly&#8221; structure at least once before, which looks something like:<\/p>\n<blockquote><p><a href=\"https:\/\/wpshout.com\/?p=4838\">https:\/\/wpshout.com\/?p=4838<\/a><\/p><\/blockquote>\n<p>Some of your will likely know, but some of you may not, that this is identical to:<\/p>\n<blockquote><p><a href=\"https:\/\/wpshout.com\/index.php?p=4838\">https:\/\/wpshout.com\/index.php?p=4838<\/a><\/p><\/blockquote>\n<p>The server software \u2014 Apache of Nginx \u2014 massages those two so they work the same. It&#8217;s also possible for them to massage less obvious things into this format. Perhaps, something like this:<\/p>\n<blockquote><p><a href=\"https:\/\/wpshout.com\/wordpress-front-controller\/\">https:\/\/wpshout.com\/wordpress-front-controller\/<\/a><\/p><\/blockquote>\n<p>In Apache, this is done through the <code>mod_rewrite<\/code> module, which you usually interact with in a <code>.htaccess<\/code> file. For Nginx, the term of art is less obscure: it&#8217;s the configuration. But in either case, all three of these URLs will get from our WordPress installation here the exact same thing \u2014 this article. They&#8217;re all hitting the WordPress front controller and finding this article \u2014 the first two through the\u00a0ID, the last through a bit more complex a procedure \u2014 and\u00a0rendering the page through our theme. Pretty cool, right?<\/p>\n<h2 id=\"whatthewordpressfrontcontrollerdoes\">What the WordPress Front Controller Does<\/h2>\n<p>As you may be thinking after that the WordPress front controller is your <code>index.php<\/code> file. The root <code>index.php<\/code> file to be exact (since WordPress like many other PHP apps also has a ton of others). The root <code>index.php<\/code> file of your theme <em>is<\/em> your front controller. All requests on the front side of your site \u2014 whether for search results, a tag archive, a static page, or a blog index page \u2014 gets rooted through the <code>index.php<\/code> file.<\/p>\n<p>So what&#8217;s in there? Well, not much really:<\/p>\n<pre class=\"language-php\"><code>&lt;?php\n\/**\n * Front to the WordPress application. This file doesn't do anything, but loads\n * wp-blog-header.php which does and tells WordPress to load the theme.\n *\n * @package WordPress\n *\/\n\n\/**\n * Tells WordPress to load the WordPress theme and output it.\n * @var bool\n *\/\ndefine('WP_USE_THEMES', true);\n\n\/** Loads the WordPress Environment and Template *\/\nrequire( dirname( __FILE__ ) . '\/wp-blog-header.php' );\n<\/code><\/pre>\n<p>If you&#8217;re at all familiar with PHP \u2014 or almost any other \u2014 programming syntax, you&#8217;ll notice that much of this file is comments. Only two lines of actual code exist in it.<\/p>\n<p>A constant \u2014 <code>WP_USE_THEME<\/code> is defined, and then another file is required (which is to say included in the execution of this file). That&#8217;s it.<\/p>\n<p>We could follow the chain of <code>require<\/code>s and definitions along the chain of WordPress&#8217;s functioning all the way until your page is rendered and returned, but that&#8217;s far past the sane scope of one single internet article. And well past what you need to understand to know the front controller pattern.<\/p>\n<h2 id=\"thingstoknowaboutthewordpressfrontcontroller\">Things to know about the WordPress front controller<\/h2>\n<p>So what have we learned?<\/p>\n<ul>\n<li><strong>All WordPress pages on the front in go through a &#8220;front controller&#8221;<\/strong>, located at <code>index.php<\/code>.<\/li>\n<li><strong><code>.htaccess<\/code> files are used to route Apache requests for URL&#8217;s that don&#8217;t map to the underlying file system<\/strong> to the front controller. This is how your articles get &#8220;pretty permalinks&#8221;, and how WordPress catches all the &#8220;Page not found&#8221; or 404 requests on your site.<\/li>\n<li><strong>The front controller is how files from all around the WordPress file system are included in the response to a single request.<\/strong> The front controller starts a chain that rounds up files located far away from the root URLs of your site, typically in <code>wp-content\/themes\/theme-name\/<\/code>, and uses them to show your pages using the specific look you define.<\/li>\n<\/ul>\n<p>There is more depths to design patterns, the front controller, and how all these things work with WordPress. Comments are open and as always I&#8217;d love to hear what you&#8217;re wondering or what I missed. Thanks for reading!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Computer programmers love to think about systems. In doing that, they generalize how they work and how we can classify them. So you&#8217;ll find lots of people talking about &#8220;design patterns&#8221; \u2014 both loved and hated ones \u2014 that are common across the architecture of many different software systems. One of my favorite patterns \u2014&hellip;&nbsp;<a href=\"https:\/\/wpshout.com\/wordpress-front-controller\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">WordPress and the Front Controller Design Pattern<\/span><\/a><\/p>\n","protected":false},"author":98,"featured_media":4839,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_stopmodifiedupdate":false,"_modified_date":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_has_post_settings":[],"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[8384],"tags":[8385,8391],"hashtags":[],"class_list":["post-4838","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-back-end-development","tag-wps","tag-wps-nf","difficulty-advanced"],"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.3 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>WordPress and the Front Controller Design Pattern<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wpshout.com\/wordpress-front-controller\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress and the Front Controller Design Pattern\" \/>\n<meta property=\"og:description\" content=\"Computer programmers love to think about systems. In doing that, they generalize how they work and how we can classify them. So you&rsquo;ll find lots of people talking about &ldquo;design patterns&rdquo; &mdash; both loved and hated ones &mdash; that are common across the architecture of many different software systems. One of my favorite patterns &mdash;&hellip;&nbsp;Read More &raquo;WordPress and the Front Controller Design Pattern\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpshout.com\/wordpress-front-controller\/\" \/>\n<meta property=\"og:site_name\" content=\"WPShout\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-11T22:01:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-02-18T16:24:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/07\/wpshout-cover.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Hayes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@davidbhayes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Hayes\" \/>\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:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/\"},\"author\":{\"name\":\"David Hayes\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/#\\\/schema\\\/person\\\/52fe4c318c3274cd57077039975c0dde\"},\"headline\":\"WordPress and the Front Controller Design Pattern\",\"datePublished\":\"2014-02-11T22:01:10+00:00\",\"dateModified\":\"2015-02-18T16:24:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/\"},\"wordCount\":1035,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"keywords\":[\"wps\",\"wps-nf\"],\"articleSection\":[\"Back-End Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/\",\"url\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/\",\"name\":\"WordPress and the Front Controller Design Pattern\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2014-02-11T22:01:10+00:00\",\"dateModified\":\"2015-02-18T16:24:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/wordpress-front-controller\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wpshout.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress and the Front Controller Design Pattern\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/#website\",\"url\":\"https:\\\/\\\/wpshout.com\\\/\",\"name\":\"WPShout\",\"description\":\"A hub for advanced WordPress users, developers &amp; savvy business owners.\",\"publisher\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/#organization\"},\"alternateName\":\"WPS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wpshout.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/#organization\",\"name\":\"VertiStudio\",\"alternateName\":\"Vertigo Studio SA\",\"url\":\"https:\\\/\\\/wpshout.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\/\\/wpshout.com\\/wp-content\\/uploads\\/2024\\/02\\/VertiStudio_logo1.png\",\"contentUrl\":\"https:\\/\\/wpshout.com\\/wp-content\\/uploads\\/2024\\/02\\/VertiStudio_logo1.png\",\"width\":718,\"height\":156,\"caption\":\"VertiStudio\"},\"image\":{\"@id\":\"https:\\\/\\\/wpshout.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"publishingPrinciples\":\"https:\\\/\\\/wpshout.com\\\/editorial-policy\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wpshout.com\\\/#\\\/schema\\\/person\\\/52fe4c318c3274cd57077039975c0dde\",\"name\":\"David Hayes\",\"description\":\"David B. Hayes used to be a co-owner of WPShout. He\\\\'s been using WordPress since 2007, and has a mature love (like an old married couple) for the content managment system. He\\\\'s done loads of client work with it, uses it on a variety of personal projects, and generally thinks it\\\\'s worth most people keeping it in their toolbox.\",\"sameAs\":[\"http:\\\/\\\/www.davidbhayes.com\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/davidbhayes\\\/\",\"https:\\\/\\\/x.com\\\/davidbhayes\"],\"url\":\"https:\\\/\\\/wpshout.com\\\/author\\\/david\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress and the Front Controller Design Pattern","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:\/\/wpshout.com\/wordpress-front-controller\/","og_locale":"en_US","og_type":"article","og_title":"WordPress and the Front Controller Design Pattern","og_description":"Computer programmers love to think about systems. In doing that, they generalize how they work and how we can classify them. So you&rsquo;ll find lots of people talking about &ldquo;design patterns&rdquo; &mdash; both loved and hated ones &mdash; that are common across the architecture of many different software systems. One of my favorite patterns &mdash;&hellip;&nbsp;Read More &raquo;WordPress and the Front Controller Design Pattern","og_url":"https:\/\/wpshout.com\/wordpress-front-controller\/","og_site_name":"WPShout","article_published_time":"2014-02-11T22:01:10+00:00","article_modified_time":"2015-02-18T16:24:00+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/07\/wpshout-cover.png","type":"image\/png"}],"author":"David Hayes","twitter_card":"summary_large_image","twitter_creator":"@davidbhayes","twitter_misc":{"Written by":"David Hayes","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#article","isPartOf":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/"},"author":{"name":"David Hayes","@id":"https:\/\/wpshout.com\/#\/schema\/person\/52fe4c318c3274cd57077039975c0dde"},"headline":"WordPress and the Front Controller Design Pattern","datePublished":"2014-02-11T22:01:10+00:00","dateModified":"2015-02-18T16:24:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/"},"wordCount":1035,"commentCount":1,"publisher":{"@id":"https:\/\/wpshout.com\/#organization"},"image":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#primaryimage"},"thumbnailUrl":"","keywords":["wps","wps-nf"],"articleSection":["Back-End Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wpshout.com\/wordpress-front-controller\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wpshout.com\/wordpress-front-controller\/","url":"https:\/\/wpshout.com\/wordpress-front-controller\/","name":"WordPress and the Front Controller Design Pattern","isPartOf":{"@id":"https:\/\/wpshout.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#primaryimage"},"image":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#primaryimage"},"thumbnailUrl":"","datePublished":"2014-02-11T22:01:10+00:00","dateModified":"2015-02-18T16:24:00+00:00","breadcrumb":{"@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpshout.com\/wordpress-front-controller\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/wpshout.com\/wordpress-front-controller\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpshout.com\/"},{"@type":"ListItem","position":2,"name":"WordPress and the Front Controller Design Pattern"}]},{"@type":"WebSite","@id":"https:\/\/wpshout.com\/#website","url":"https:\/\/wpshout.com\/","name":"WPShout","description":"A hub for advanced WordPress users, developers &amp; savvy business owners.","publisher":{"@id":"https:\/\/wpshout.com\/#organization"},"alternateName":"WPS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpshout.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/wpshout.com\/#organization","name":"VertiStudio","alternateName":"Vertigo Studio SA","url":"https:\/\/wpshout.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpshout.com\/#\/schema\/logo\/image\/","url":"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png","contentUrl":"https:\/\/iotvnaw69daj.i.optimole.com\/cb:FUms.67a93\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/wpshout.com\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png","width":718,"height":156,"caption":"VertiStudio"},"image":{"@id":"https:\/\/wpshout.com\/#\/schema\/logo\/image\/"},"publishingPrinciples":"https:\/\/wpshout.com\/editorial-policy\/"},{"@type":"Person","@id":"https:\/\/wpshout.com\/#\/schema\/person\/52fe4c318c3274cd57077039975c0dde","name":"David Hayes","description":"David B. Hayes used to be a co-owner of WPShout. He\\'s been using WordPress since 2007, and has a mature love (like an old married couple) for the content managment system. He\\'s done loads of client work with it, uses it on a variety of personal projects, and generally thinks it\\'s worth most people keeping it in their toolbox.","sameAs":["http:\/\/www.davidbhayes.com","https:\/\/www.linkedin.com\/in\/davidbhayes\/","https:\/\/x.com\/davidbhayes"],"url":"https:\/\/wpshout.com\/author\/david\/"}]}},"_links":{"self":[{"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/posts\/4838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/comments?post=4838"}],"version-history":[{"count":1,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/posts\/4838\/revisions"}],"predecessor-version":[{"id":140311,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/posts\/4838\/revisions\/140311"}],"wp:attachment":[{"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/media?parent=4838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/categories?post=4838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/tags?post=4838"},{"taxonomy":"hashtags","embeddable":true,"href":"https:\/\/wpshout.com\/wp-json\/wp\/v2\/hashtags?post=4838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}