{"id":1117,"date":"2014-10-27T15:45:10","date_gmt":"2014-10-27T13:45:10","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=1117"},"modified":"2014-10-25T15:36:50","modified_gmt":"2014-10-25T12:36:50","slug":"templating-a-wordpress-theme-with-twig","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/","title":{"rendered":"Templating a WordPress theme with Twig"},"content":{"rendered":"<p>Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled, Twig-based theme happily running on WordPress.<\/p>\n<p><a title=\"Twig homepage\" href=\"http:\/\/twig.sensiolabs.org\/\" target=\"_blank\">Twig <\/a>is a templating engine for php. It has more than enough features to get me going, setting it up is as easy as falling off a tree, and I haven\u2019t used it much, which makes it a good candidate for me.<\/p>\n<h2>Making WordPress call Twig<\/h2>\n<p>Once we\u2019ve downloaded Twig and put it somewhere convenient (in my case, in my theme folder \u2013 I\u2019d like to move it out eventually, but it can stay there while I work it out), we need to tell WordPress to initialize the Twig engine. Darko Goles\u2019 blog post, <a href=\"http:\/\/inchoo.net\/wordpress\/twig-with-wordpress-part1\/\" target=\"_blank\">TWIG with WordPress part 1<\/a>, covers this admirably. In his post, he\u2019s initializing the engine through a plugin, which I wanted to avoid as I didn\u2019t want a theme to depend on a plugin. Luckily the mechanism is the same, since the hooking mechanism in WordPress papers over these issues \u2013 we can initialize from a theme exactly like we do from a plugin, by specifying the actions in a functions.php file:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\n    \/\/ theme functions.php\r\n    require_once dirname(__FILE__).'\/twig.helper.php';\r\n?&gt;<\/pre>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\n    \/\/ twig.helper.php\r\n    require_once dirname(__FILE__).'\/lib\/Twig\/Autoloader.php';\r\n\r\n    class Twig_Helper {\r\n\tpublic static function register() {\r\n\t    ini_set('unserialize_callback_func',\r\n                'spl_autoload_call');\r\n            spl_autoload_register(array(new self, 'autoload'));\r\n\t}\r\n\r\n\tpublic static function autoload($class) {\r\n\r\n            if (0 !== strpos($class, 'Wp_TwigEngine'))\r\n\t        return;\r\n\r\n            if (file_exists($file = dirname(__FILE__) . '\/..\/'\r\n                . str_replace(array('_', '&#92;&#48;'), array('\/', ''),\r\n                $class) . '.php')) {\r\n\t\t     echo($file);\r\n\t\t     exit;\r\n                     require $file;\r\n\t    }\r\n\t}\r\n\r\n\t...\r\n\t...\r\n    }\r\n\r\n    ...\r\n\r\n    function autoload_twig() {\r\n        Twig_Autoloader::register();\r\n\tTwig_Helper::register();\r\n    }\r\n\r\n    add_action('init', 'autoload_twig');\r\n?&gt;<\/pre>\n<p>The above is copied nearly verbatim from the post I mentioned above, and works fine. It registers twig and loads all the classes it needs to work. I put this in a separate file and referenced it from functions.php so it wouldn\u2019t get mixed in with any theming functions I might need to add later.<\/p>\n<h2>Getting to the data<\/h2>\n<p>Now we\u2019re able to load templates, but we still need to be able to pass data to them. The solution came, again, from Mr. Goles\u2019 blog, this time from <a href=\"http:\/\/inchoo.net\/wordpress\/twig-wordpress-part2\/\" target=\"_blank\">TWIG with WordPress part 2<\/a> \u2013 we pass a proxy object to the template, which it can then use to call functions on. Again, I used the code from this post almost as provided, except that I used the same TwigHelper class to provide this proxy. I also added another method, text, to wrap the __(string, key) function used for localization.<\/p>\n<h2>Writing templates<\/h2>\n<p>The template file looks like this:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">{% extends 'master.html.twig' %}\r\n{% block pageContent %}\r\n\t&lt;section id='content' role='main'&gt;\r\n\t\t{% for post in posts %}\r\n\t\t\t{% set format = site.get_post_format() %}\r\n\t\t\t{% include format\r\n                               ? 'content-' ~ format ~ '.html.twig'\r\n                               : 'content.html.twig' %}\r\n\t\t{% else %}\r\n\t\t\t{% include 'content-none.html.twig' %}\r\n\t\t{% endfor %&gt;\r\n\t&lt;\/section&gt;\r\n{% endblock %}<\/pre>\n<p>Not much of it, is there? In reality, that\u2019s because most of the layout is defined in master.html.twig, which we\u2019re extending in the first line. This file has placeholders for the pageContent block which is being filled up here, and the rest of the page around it. I\u2019ve also delegated the no-content section to its own file. The snippet above is the equivalent of:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;div id='content' role='main'&gt;\r\n\t    &lt;?php if ( have_posts() ) : ?&gt;\r\n\t        &lt;?php while ( have_posts() ) : the_post(); ?&gt;\r\n\t            &lt;?php get_template_part('content',\r\n                                 get_post_format() ); ?&gt;\r\n\t        &lt;?php endwhile; ?&gt;\r\n\t&lt;?php else : ?&gt;\r\n\t\t&lt;?!-- stuff to show if there's no content --&gt;\r\n\t&lt;?php endif; ?&gt;\r\n\t&lt;\/div&gt;<\/pre>\n<p>It may not be significantly shorter, but it\u2019s a damn sight easier to read. The readability and size gains are much greater when you have more markup, but I don\u2019t want this to be a templating post.<\/p>\n<h2>While\u2026 hang on, where\u2019s while?<\/h2>\n<p>As I was working on the loop, I realized that Twig doesn\u2019t have a \u201cwhile\u201d control. This was a problem as WordPress is heavily dependent on The Loop. This can be worked around, as demonstrated in <a href=\"http:\/\/www.craftitonline.com\/2011\/10\/closured-iterator-the-secret-while-twig-tag\/\" target=\"_blank\">this blog post by Luis Cordova<\/a>, by making an iterator and using it in a for loop. It\u2019s a good enough solution and the template doesn\u2019t look bad.<\/p>\n<h2>Current status<\/h2>\n<p>At this point I have a barely functional them (still need to port over a lot of stuff) but getting here took a lot less time than I thought it would. My next step will probably be to port over as much of the old theme as I can, and then work from there.<\/p>\n<h3><\/h3>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/karlagius.com\/2013\/04\/06\/templating-a-wordpress-theme-with-twig\/\">Templating a WordPress theme with Twig<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/wcg\/\">WCG partner<\/a> Karl Agius at the <a href=\"http:\/\/karlagius.com\/\">The Simple Part<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled, Twig-based theme happily running on WordPress. Twig is a templating engine for php. It has more than enough features to get me going, setting it up &hellip;<\/p>\n","protected":false},"author":12,"featured_media":926,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[37],"class_list":["post-1117","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-twig"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Templating a WordPress theme with Twig - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,\" \/>\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.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Templating a WordPress theme with Twig - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-27T13:45:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Karl Agius\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Karl Agius\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\"},\"author\":{\"name\":\"Karl Agius\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/35cf457f6419a5237d6bd53ebd555a71\"},\"headline\":\"Templating a WordPress theme with Twig\",\"datePublished\":\"2014-10-27T13:45:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\"},\"wordCount\":825,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg\",\"keywords\":[\"Twig\"],\"articleSection\":[\"WordPress\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\",\"name\":\"Templating a WordPress theme with Twig - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg\",\"datePublished\":\"2014-10-27T13:45:10+00:00\",\"description\":\"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Templating a WordPress theme with Twig\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/35cf457f6419a5237d6bd53ebd555a71\",\"name\":\"Karl Agius\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/85f927d2a11fcd5b86cd2332b2f0e242fa4b752ffe35b8797ea23def50a39b30?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/85f927d2a11fcd5b86cd2332b2f0e242fa4b752ffe35b8797ea23def50a39b30?s=96&d=mm&r=g\",\"caption\":\"Karl Agius\"},\"sameAs\":[\"http:\/\/karlagius.com\/\"],\"url\":\"https:\/\/www.webcodegeeks.com\/author\/karl-agius\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Templating a WordPress theme with Twig - Web Code Geeks - 2026","description":"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,","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.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/","og_locale":"en_US","og_type":"article","og_title":"Templating a WordPress theme with Twig - Web Code Geeks - 2026","og_description":"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,","og_url":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2014-10-27T13:45:10+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg","type":"image\/jpeg"}],"author":"Karl Agius","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Karl Agius","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/"},"author":{"name":"Karl Agius","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/35cf457f6419a5237d6bd53ebd555a71"},"headline":"Templating a WordPress theme with Twig","datePublished":"2014-10-27T13:45:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/"},"wordCount":825,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg","keywords":["Twig"],"articleSection":["WordPress"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/","url":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/","name":"Templating a WordPress theme with Twig - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg","datePublished":"2014-10-27T13:45:10+00:00","description":"Well, that wasn\u2019t as painful as I thought it would be. Some googling and a couple of experiments went a long way, and now I have a partial, unstyled,","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2014\/10\/twig-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/wordpress\/templating-a-wordpress-theme-with-twig\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"WordPress","item":"https:\/\/www.webcodegeeks.com\/category\/wordpress\/"},{"@type":"ListItem","position":3,"name":"Templating a WordPress theme with Twig"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/35cf457f6419a5237d6bd53ebd555a71","name":"Karl Agius","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/85f927d2a11fcd5b86cd2332b2f0e242fa4b752ffe35b8797ea23def50a39b30?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/85f927d2a11fcd5b86cd2332b2f0e242fa4b752ffe35b8797ea23def50a39b30?s=96&d=mm&r=g","caption":"Karl Agius"},"sameAs":["http:\/\/karlagius.com\/"],"url":"https:\/\/www.webcodegeeks.com\/author\/karl-agius\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/1117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=1117"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/1117\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/926"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=1117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=1117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=1117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}