CINXE.COM

Understanding your VIP codebase - Enterprise WordPress hosting, support, and consulting - WordPress VIP

<!DOCTYPE html> <html lang="en-US"> <head><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/","20200418222509","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1587248709"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta charset="UTF-8"/><script type="text/javascript">(window.NREUM||(NREUM={})).loader_config={licenseKey:"949ceaf672",applicationID:"199533422"};window.NREUM||(NREUM={}),__nr_require=function(e,n,t){function r(t){if(!n[t]){var i=n[t]={exports:{}};e[t][0].call(i.exports,function(n){var i=e[t][1][n];return r(i||n)},i,i.exports)}return n[t].exports}if("function"==typeof __nr_require)return __nr_require;for(var i=0;i<t.length;i++)r(t[i]);return r}({1:[function(e,n,t){function r(){}function i(e,n,t){return function(){return o(e,[u.now()].concat(f(arguments)),n?null:this,t),n?void 0:this}}var o=e("handle"),a=e(4),f=e(5),c=e("ee").get("tracer"),u=e("loader"),s=NREUM;"undefined"==typeof window.newrelic&&(newrelic=s);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",d=l+"ixn-";a(p,function(e,n){s[n]=i(l+n,!0,"api")}),s.addPageAction=i(l+"addPageAction",!0),s.setCurrentRouteName=i(l+"routeName",!0),n.exports=newrelic,s.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(e,n){var t={},r=this,i="function"==typeof n;return o(d+"tracer",[u.now(),e,t],r),function(){if(c.emit((i?"":"no-")+"fn-start",[u.now(),r,i],t),i)try{return n.apply(this,arguments)}catch(e){throw c.emit("fn-err",[arguments,this,e],t),e}finally{c.emit("fn-end",[u.now()],t)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,n){m[n]=i(d+n)}),newrelic.noticeError=function(e,n){"string"==typeof e&&(e=new Error(e)),o("err",[e,u.now(),!1,n])}},{}],2:[function(e,n,t){function r(e,n){var t=e.getEntries();t.forEach(function(e){"first-paint"===e.name?c("timing",["fp",Math.floor(e.startTime)]):"first-contentful-paint"===e.name&&c("timing",["fcp",Math.floor(e.startTime)])})}function i(e,n){var t=e.getEntries();t.length>0&&c("lcp",[t[t.length-1]])}function o(e){if(e instanceof s&&!l){var n,t=Math.round(e.timeStamp);n=t>1e12?Date.now()-t:u.now()-t,l=!0,c("timing",["fi",t,{type:e.type,fid:n}])}}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var a,f,c=e("handle"),u=e("loader"),s=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){a=new PerformanceObserver(r),f=new PerformanceObserver(i);try{a.observe({entryTypes:["paint"]}),f.observe({entryTypes:["largest-contentful-paint"]})}catch(p){}}if("addEventListener"in document){var l=!1,d=["click","keydown","mousedown","pointerdown","touchstart"];d.forEach(function(e){document.addEventListener(e,o,!1)})}}},{}],3:[function(e,n,t){function r(e,n){if(!i)return!1;if(e!==i)return!1;if(!n)return!0;if(!o)return!1;for(var t=o.split("."),r=n.split("."),a=0;a<r.length;a++)if(r[a]!==t[a])return!1;return!0}var i=null,o=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var f=navigator.userAgent,c=f.match(a);c&&f.indexOf("Chrome")===-1&&f.indexOf("Chromium")===-1&&(i="Safari",o=c[1])}n.exports={agent:i,version:o,match:r}},{}],4:[function(e,n,t){function r(e,n){var t=[],r="",o=0;for(r in e)i.call(e,r)&&(t[o]=n(r,e[r]),o+=1);return t}var i=Object.prototype.hasOwnProperty;n.exports=r},{}],5:[function(e,n,t){function r(e,n,t){n||(n=0),"undefined"==typeof t&&(t=e?e.length:0);for(var r=-1,i=t-n||0,o=Array(i<0?0:i);++r<i;)o[r]=e[n+r];return o}n.exports=r},{}],6:[function(e,n,t){n.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(e,n,t){function r(){}function i(e){function n(e){return e&&e instanceof r?e:e?c(e,f,o):o()}function t(t,r,i,o){if(!l.aborted||o){e&&e(t,r,i);for(var a=n(i),f=v(t),c=f.length,u=0;u<c;u++)f[u].apply(a,r);var p=s[y[t]];return p&&p.push([b,t,r,a]),a}}function d(e,n){h[e]=v(e).concat(n)}function m(e,n){var t=h[e];if(t)for(var r=0;r<t.length;r++)t[r]===n&&t.splice(r,1)}function v(e){return h[e]||[]}function g(e){return p[e]=p[e]||i(t)}function w(e,n){u(e,function(e,t){n=n||"feature",y[t]=n,n in s||(s[n]=[])})}var h={},y={},b={on:d,addEventListener:d,removeEventListener:m,emit:t,get:g,listeners:v,context:n,buffer:w,abort:a,aborted:!1};return b}function o(){return new r}function a(){(s.api||s.feature)&&(l.aborted=!0,s=l.backlog={})}var f="nr@context",c=e("gos"),u=e(4),s={},p={},l=n.exports=i();l.backlog=s},{}],gos:[function(e,n,t){function r(e,n,t){if(i.call(e,n))return e[n];var r=t();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,n,{value:r,writable:!0,enumerable:!1}),r}catch(o){}return e[n]=r,r}var i=Object.prototype.hasOwnProperty;n.exports=r},{}],handle:[function(e,n,t){function r(e,n,t,r){i.buffer([e],r),i.emit(e,n,t)}var i=e("ee").get("handle");n.exports=r,r.ee=i},{}],id:[function(e,n,t){function r(e){var n=typeof e;return!e||"object"!==n&&"function"!==n?-1:e===window?0:a(e,o,function(){return i++})}var i=1,o="nr@id",a=e("gos");n.exports=r},{}],loader:[function(e,n,t){function r(){if(!x++){var e=E.info=NREUM.info,n=d.getElementsByTagName("script")[0];if(setTimeout(s.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&n))return s.abort();u(y,function(n,t){e[n]||(e[n]=t)}),c("mark",["onload",a()+E.offset],null,"api");var t=d.createElement("script");t.src="https://"+e.agent,n.parentNode.insertBefore(t,n)}}function i(){"complete"===d.readyState&&o()}function o(){c("mark",["domContent",a()+E.offset],null,"api")}function a(){return O.exists&&performance.now?Math.round(performance.now()):(f=Math.max((new Date).getTime(),f))-E.offset}var f=(new Date).getTime(),c=e("handle"),u=e(4),s=e("ee"),p=e(3),l=window,d=l.document,m="addEventListener",v="attachEvent",g=l.XMLHttpRequest,w=g&&g.prototype;NREUM.o={ST:setTimeout,SI:l.setImmediate,CT:clearTimeout,XHR:g,REQ:l.Request,EV:l.Event,PR:l.Promise,MO:l.MutationObserver};var h=""+location,y={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1167.min.js"},b=g&&w&&w[m]&&!/CriOS/.test(navigator.userAgent),E=n.exports={offset:f,now:a,origin:h,features:{},xhrWrappable:b,userAgent:p};e(1),e(2),d[m]?(d[m]("DOMContentLoaded",o,!1),l[m]("load",r,!1)):(d[v]("onreadystatechange",i),l[v]("onload",r)),c("mark",["firstbyte",f],null,"api");var x=0,O=e(6)},{}],"wrap-function":[function(e,n,t){function r(e){return!(e&&e instanceof Function&&e.apply&&!e[a])}var i=e("ee"),o=e(5),a="nr@original",f=Object.prototype.hasOwnProperty,c=!1;n.exports=function(e,n){function t(e,n,t,i){function nrWrapper(){var r,a,f,c;try{a=this,r=o(arguments),f="function"==typeof t?t(r,a):t||{}}catch(u){l([u,"",[r,a,i],f])}s(n+"start",[r,a,i],f);try{return c=e.apply(a,r)}catch(p){throw s(n+"err",[r,a,p],f),p}finally{s(n+"end",[r,a,c],f)}}return r(e)?e:(n||(n=""),nrWrapper[a]=e,p(e,nrWrapper),nrWrapper)}function u(e,n,i,o){i||(i="");var a,f,c,u="-"===i.charAt(0);for(c=0;c<n.length;c++)f=n[c],a=e[f],r(a)||(e[f]=t(a,u?f+i:i,o,f))}function s(t,r,i){if(!c||n){var o=c;c=!0;try{e.emit(t,r,i,n)}catch(a){l([a,t,r,i])}c=o}}function p(e,n){if(Object.defineProperty&&Object.keys)try{var t=Object.keys(e);return t.forEach(function(t){Object.defineProperty(n,t,{get:function(){return e[t]},set:function(n){return e[t]=n,n}})}),n}catch(r){l([r])}for(var i in e)f.call(e,i)&&(n[i]=e[i]);return n}function l(n){try{e.emit("internal-error",n)}catch(t){}}return e||(e=i),t.inPlace=u,t.flag=a,t}},{}]},{},["loader"]);</script> <meta name="viewport" content="width=device-width, initial-scale=1"/> <link rel="profile" href="http://gmpg.org/xfn/11"/> <title>Understanding your VIP codebase - Enterprise WordPress hosting, support, and consulting - WordPress VIP</title> <!-- This site is optimized with the Yoast SEO plugin v11.6 - https://yoast.com/wordpress/plugins/seo/ --> <link rel="canonical" href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/"/> <meta property="og:locale" content="en_US"/> <meta property="og:type" content="article"/> <meta property="og:title" content="Understanding your VIP codebase - Enterprise WordPress hosting, support, and consulting - WordPress VIP"/> <meta property="og:description" content="ContentsOverviewAccess to the VIP repositoryWhat can be put in the VIP repository?FaviconsSubmodulesVIP Go MU pluginsDeveloping in the Github RepoHow does the code get deployed?Plugins on VIP Gosunrise.phpHow do I access my code?About themes on VIP GoChild ThemesNo required code in functions.php and no vip-init.phpUsing /privateWhat versions of WordPress and Jetpack does VIP Go use?How do new versions …"/> <meta property="og:url" content="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/"/> <meta property="og:site_name" content="Enterprise WordPress hosting, support, and consulting - WordPress VIP"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:description" content="ContentsOverviewAccess to the VIP repositoryWhat can be put in the VIP repository?FaviconsSubmodulesVIP Go MU pluginsDeveloping in the Github RepoHow does the code get deployed?Plugins on VIP Gosunrise.phpHow do I access my code?About themes on VIP GoChild ThemesNo required code in functions.php and no vip-init.phpUsing /privateWhat versions of WordPress and Jetpack does VIP Go use?How do new versions […]"/> <meta name="twitter:title" content="Understanding your VIP codebase - Enterprise WordPress hosting, support, and consulting - WordPress VIP"/> <script type="application/ld+json" class="yoast-schema-graph yoast-schema-graph--main">{"@context":"https://web.archive.org/web/20200418222509/https://schema.org","@graph":[{"@type":"WebSite","@id":"https://web.archive.org/web/20200418222509/https://wpvip.com/#website","url":"https://web.archive.org/web/20200418222509/https://wpvip.com/","name":"Enterprise WordPress hosting, support, and consulting - WordPress VIP","potentialAction":{"@type":"SearchAction","target":"https://web.archive.org/web/20200418222509/https://wpvip.com/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"WebPage","@id":"https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/#webpage","url":"https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/","inLanguage":"en-US","name":"Understanding your VIP codebase - Enterprise WordPress hosting, support, and consulting - WordPress VIP","isPartOf":{"@id":"https://web.archive.org/web/20200418222509/https://wpvip.com/#website"},"datePublished":"2016-05-05T20:49:59-04:00","dateModified":"2020-03-17T16:55:25-04:00"}]}</script> <!-- / Yoast SEO plugin. --> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://fonts.googleapis.com/"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://s.w.org/"/> <link rel="alternate" type="application/rss+xml" title="Enterprise WordPress hosting, support, and consulting - WordPress VIP » Feed" href="https://web.archive.org/web/20200418222509/https://wpvip.com/feed/"/> <link rel="alternate" type="application/rss+xml" title="Enterprise WordPress hosting, support, and consulting - WordPress VIP » Comments Feed" href="https://web.archive.org/web/20200418222509/https://wpvip.com/comments/feed/"/> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/web.archive.org\/web\/20200418222509\/https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/web.archive.org\/web\/20200418222509\/https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/web.archive.org\/web\/20200418222509\/https:\/\/wpvip.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.4"}}; /*! This file is auto-generated */ !function(e,a,t){var r,n,o,i,p=a.createElement("canvas"),s=p.getContext&&p.getContext("2d");function c(e,t){var a=String.fromCharCode;s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,e),0,0);var r=p.toDataURL();return s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,t),0,0),r===p.toDataURL()}function l(e){if(!s||!s.fillText)return!1;switch(s.textBaseline="top",s.font="600 32px Arial",e){case"flag":return!c([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])&&(!c([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!c([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]));case"emoji":return!c([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}function d(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(i=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},o=0;o<i.length;o++)t.supports[i[o]]=l(i[o]),t.supports.everything=t.supports.everything&&t.supports[i[o]],"flag"!==i[o]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[i[o]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(r=t.source||{}).concatemoji?d(r.concatemoji):r.wpemoji&&r.twemoji&&(d(r.twemoji),d(r.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel="stylesheet" id="all-css-0" href="https://web.archive.org/web/20200418222509cs_/https://wpvip.com/wp-includes/css/dist/components/style.min.css?m=1585689594g" type="text/css" media="all"/> <link crossorigin="anonymous" rel="stylesheet" id="wp-editor-font-css" href="https://web.archive.org/web/20200418222509cs_/https://fonts.googleapis.com/css?family=Noto+Serif%3A400%2C400i%2C700%2C700i&amp;ver=5.4" media="all"/> <link rel="stylesheet" id="all-css-2" href="https://web.archive.org/web/20200418222509cs_/https://wpvip.com/_static/??-eJydkEsOwjAMBS9EaqhUAQvEWdrEoqb5KXaA3p7QggSCBbDJwvE8jw3nqMhrmw0yaGYwxAKdDXpQaEhCApbRYuXIV+V/AR8Bny9f9f0QOTtY6lKbxj8I6dH9RsxyL4gOXtALRJsP5LmUThR1cGoin1O4uuNdJmveAlxWjwzGNuke0LYspGPCh81NK5WyoFExsPA8RU2780evp9gjSmz1AC6YXNrB0lDe+W4F27vdqtmsl029beorh4e7+A==" type="text/css" media="all"/> <style id="wp-block-library-inline-css"> .has-text-align-justify{text-align:justify;} </style> <link crossorigin="anonymous" rel="stylesheet" id="wpcomvip-google-fonts-css" href="https://web.archive.org/web/20200418222509cs_/https://fonts.googleapis.com/css?family=Noto+Sans:400,400i,700,700i%7CNoto+Serif:400,400i,700,700i" media="all"/> <link rel="stylesheet" id="all-css-4" href="https://web.archive.org/web/20200418222509cs_/https://wpvip.com/_static/??-eJyVjkEOwjAMBD9EMEVqSw+ItwTXtIYmsWqHit+TckCIAxK32cOMFhZxmKJRNLCRAiksgincWdx+V7XQsxqgKgTPcVtgAx9KyE6mPHBUUPIzjkCTV2OUmYrzli8eydSpPSbSbfhdupKJxxuE1OdpPcT9UGywJE6SFnp1/kloPivOLMYpfq01cwrHqj40XVt3TfUExj9nMQ==" type="text/css" media="all"/> <script src="https://web.archive.org/web/20200418222509js_/https://www.google.com/recaptcha/api.js?render=6LcnkM0UAAAAAM_cIEdcModTVc1eHANxTw_RYPc4"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJzTLy/QzcxLzilNSS3WzwKiwtLUokoopZdVrKOPT4FubmZ6UWJJql5uZh5QsX2uraGphamZhaWppVkWACX5IMQ="></script> <link rel="https://api.w.org/" href="https://wpvip.com/wp-json/"/> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://wpvip.com/xmlrpc.php?rsd"/> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://wpvip.com/wp-includes/wlwmanifest.xml"/> <meta name="generator" content="WordPress 5.4"/> <link rel="shortlink" href="https://web.archive.org/web/20200418222509/https://wpvip.com/?p=23622"/> <link rel="alternate" type="application/json+oembed" href="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwpvip.com%2Fdocumentation%2Fvip-go%2Funderstanding-your-vip-go-codebase%2F"/> <link rel="alternate" type="text/xml+oembed" href="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwpvip.com%2Fdocumentation%2Fvip-go%2Funderstanding-your-vip-go-codebase%2F&amp;format=xml"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://widgets.wp.com/"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://s0.wp.com/"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://0.gravatar.com/"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://1.gravatar.com/"/> <link rel="dns-prefetch" href="//web.archive.org/web/20200418222509/https://2.gravatar.com/"/> <style type="text/css">img#wpstats{display:none}</style> <!-- Start of Async Drift Code --> <script> "use strict"; !function() { var t = window.driftt = window.drift = window.driftt || []; if (!t.init) { if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice.")); t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ], t.factory = function(e) { return function() { var n = Array.prototype.slice.call(arguments); return n.unshift(e), t.push(n), t; }; }, t.methods.forEach(function(e) { t[e] = t.factory(e); }), t.load = function(t) { var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script"); o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://web.archive.org/web/20200418222509/https://js.driftt.com/include/" + n + "/" + t + ".js"; var i = document.getElementsByTagName("script")[0]; i.parentNode.insertBefore(o, i); }; } }(); drift.SNIPPET_VERSION = '0.3.1'; drift.load('g3k7mrzevnd8'); </script> <!-- End of Async Drift Code --> <!-- Global site tag (gtag.js) - Google Ads: 843841481 --> <script async src="https://web.archive.org/web/20200418222509js_/https://www.googletagmanager.com/gtag/js?id=AW-843841481"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-843841481'); </script> <style type="text/css"> /* If html does not have either class, do not show lazy loaded images. */ html:not( .jetpack-lazy-images-js-enabled ):not( .js ) .jetpack-lazy-image { display: none; } </style> <script> document.documentElement.classList.add( 'jetpack-lazy-images-js-enabled' ); </script> <link rel="icon" href="https://web.archive.org/web/20200418222509im_/https://wpvip.com/wp-content/uploads/2019/04/c0a70310ea07fb03e415f74916b37b35.png?w=32" sizes="32x32"/> <link rel="icon" href="https://web.archive.org/web/20200418222509im_/https://wpvip.com/wp-content/uploads/2019/04/c0a70310ea07fb03e415f74916b37b35.png?w=128" sizes="192x192"/> <link rel="apple-touch-icon" href="https://web.archive.org/web/20200418222509im_/https://wpvip.com/wp-content/uploads/2019/04/c0a70310ea07fb03e415f74916b37b35.png?w=128"/> <meta name="msapplication-TileImage" content="https://wpvip.com/wp-content/uploads/2019/04/c0a70310ea07fb03e415f74916b37b35.png?w=128"/> <style type="text/css" id="wp-custom-css"> #analytics-bing-hidden { display:none; visibility:hidden; } #analytics-linkedin-hidden { display:none; } .comment-form-cookies-consent label:before { content: " "; } /** Code Styles */ pre.wp-block-code { padding: 0; background-color: #ecebea; background-color: hsl(40, 5%, 92%); padding-right: 1.5em; } code { display: inline-block; padding: 0px 7px; border-radius: 3px; font-size: 15px; background-color: #ecebea; position: relative; bottom: 1px; color: #333; cursor: text; line-height: 1.4; } .wp-block-code code { display: block; padding: 1.5em; font-weight: 400; } .page-id-28399 #content.site-content { display:none; } .code-is-poetry { display: none; } h1.salesforce-title { font-size: 52px; line-height: 60px; } </style> </head> <body class="vip_documentation-template-default single single-vip_documentation postid-23622 group-blog"> <div id="page" class="site"> <a class="skip-link screen-reader-text" href="#content">Skip to content</a> <header id="masthead" class="site-header"> <div class="site-header-bg"></div> <div class="site-header-inner"> <div class="site-branding"> <p class="site-title"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/" rel="home"><span class="screen-reader-text">Enterprise WordPress hosting, support, and consulting &#8211; WordPress VIP</span><svg class="svg-icon svg-icon-vip" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 200 87.7"><path d="M43.8 0C19.7 0 0 19.7 0 43.8 0 68 19.7 87.7 43.8 87.7 68 87.7 87.7 68 87.7 43.8 87.7 19.7 68 0 43.8 0zM4.4 43.8c0-5.7 1.2-11.1 3.4-16l18.8 51.5C13.5 72.9 4.4 59.4 4.4 43.8zm39.4 39.4c-3.9 0-7.6-.6-11.1-1.6l11.8-34.4 12.1 33.2c.1.2.2.4.3.5-4.1 1.5-8.5 2.3-13.1 2.3zm5.5-57.8c2.4-.1 4.5-.4 4.5-.4 2.1-.3 1.9-3.4-.3-3.2 0 0-6.4.5-10.5.5-3.9 0-10.4-.5-10.4-.5-2.1-.1-2.4 3.1-.2 3.2 0 0 2 .2 4.1.4l6.1 16.8L34 68 19.7 25.4c2.4-.1 4.5-.4 4.5-.4 2.1-.3 1.9-3.4-.3-3.2 0 0-6.4.5-10.5.5h-2.5C18 11.5 30.1 4.4 43.8 4.4c10.3 0 19.6 3.9 26.6 10.3h-.5c-3.9 0-6.6 3.4-6.6 7 0 3.2 1.9 6 3.9 9.2 1.5 2.6 3.2 6 3.2 10.9 0 3.4-1 7.6-3 12.7l-3.9 13.1-14.2-42.2zm14.3 52.5l12-34.8c2.2-5.6 3-10.1 3-14.1 0-1.5-.1-2.8-.3-4.1 3.1 5.6 4.8 12.1 4.8 18.9.1 14.6-7.7 27.3-19.5 34.1zM127.3 23.6l-8.9 26.1c-.9 3.2-1.7 6.2-2 9h-.2c-.2-2.8-1-5.9-2-9l-8.9-26.1H93.6l16.8 44.1h12l16.8-44.1h-11.9zM145 23.6l-3.3 8.7v35.3h11.8v-44M195.6 28.8c-2.9-4-7-6-12.2-6-5.5 0-9.3 2.2-12.1 6.5h-.6l-1.7-5.7h-9.6v64.1h11.8V69.2c0-.6-.2-2.7-.6-6.4h.6c2.9 3.8 6.6 5.6 11.8 5.6 3.4 0 6.4-.9 9-2.7 2.5-1.8 4.5-4.5 5.9-7.9 1.4-3.5 2.1-7.6 2.1-12.3 0-7.1-1.5-12.7-4.4-16.7zm-15.5 29.9c-3 0-5.3-1-6.7-3.1-1.4-2-2.1-5.4-2.1-10.2v-1.3c.1-4.2.8-7.2 2.1-9 1.4-1.8 3.5-2.7 6.5-2.7 2.8 0 4.9 1.1 6.2 3.3 1.3 2.2 2 5.4 2 9.8.1 8.7-2.6 13.2-8 13.2z"/></svg></a></p> </div><!-- .site-branding --> <div class="menu-persistent-container"><ul id="persistent-menu" class="menu"><li id="menu-item-29030" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29030"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/contact/">Contact us</a></li> </ul></div> <button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false"> <span class="menu-toggle-border"></span> <span class="menu-toggle-border"></span> <span class="menu-toggle-border"></span> <span class="menu-toggle-border"></span> <span class="menu-toggle-border"></span> <span class="screen-reader-text">Primary Menu</span> </button> <nav id="site-navigation" class="main-navigation"> <span class="navigation-overlay"><span class="navigation-decor"></span></span> <div class="menu-primary-menu-container"><ul id="primary-menu" class="menu"><li id="menu-item-29023" class="menu-item menu-item-type-post_type_archive menu-item-object-case_studies menu-item-29023"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/case-studies/">Case Studies</a></li> <li id="menu-item-29024" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29024"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/services/">Services</a></li> <li id="menu-item-34747" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-34747"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/product/">Product</a></li> <li id="menu-item-29026" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29026"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/partners/">Partners</a></li> </ul></div><div class="menu-secondary-menu-container"><ul id="secondary-menu" class="menu"><li id="menu-item-29027" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-29027"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/news/">News</a></li> <li id="menu-item-29028" class="menu-item menu-item-type-post_type_archive menu-item-object-vip_documentation menu-item-29028"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/">Documentation</a></li> <li id="menu-item-29029" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29029"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/contact/">Contact</a></li> <li id="menu-item-30216" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30216"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/careers/">Careers</a></li> </ul></div></nav><!-- #site-navigation --> </div> </header><!-- #masthead --> <div id="content" class="site-content"> <article id="primary" class="content-area global-padding"> <nav aria-label="Breadcrumb" class="breadcrumb"> <ol> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/">Documentation</a></li><li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/">VIP Go</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/" aria-current="page">Understanding your VIP codebase</a></li> </ol> </nav> <header class="entry-header"> <h1 class="entry-title">Understanding your VIP codebase</h1> </header><!-- .entry-header --> <main id="main" class="site-main"> <div id="post-23622" class="post"> <div class="post-inner"> <div class="docs-platform-label is-vip-go"> <div class="docs-platform-label-icon"> <svg width="34" height="34" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="/web/20200418222509im_/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/#path0_fill" transform="translate(.33 .333)" fill="#FFF"/><use xlink:href="/web/20200418222509im_/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/#path1_fill" transform="translate(.33 .333)" fill="#C29C69"/><defs><path id="path0_fill" d="M33.333 16.667c0 9.204-7.462 16.666-16.666 16.666C7.462 33.333 0 25.871 0 16.667 0 7.462 7.462 0 16.667 0c9.204 0 16.666 7.462 16.666 16.667z"/><path id="path1_fill" d="M16.667 3.333C24.017 3.333 30 9.317 30 16.667S24.017 30 16.667 30c-7.35 0-13.334-5.983-13.334-13.333 0-7.35 5.984-13.334 13.334-13.334zm0-3.333C7.462 0 0 7.462 0 16.667c0 9.205 7.462 16.666 16.667 16.666 9.205 0 16.666-7.461 16.666-16.666S25.872 0 16.667 0zm1.666 21.667H15V25h3.333v-3.333zM15 18.333h3.333l.834-10h-5l.833 10z"/></defs></svg> </div> <div class="docs-platform-label-content"> <div class="docs-platform-label-content-text"> <h5 class="docs-platform-label-content-text-title">VIP Go platform specific</h5> <p class="docs-platform-label-content-text-desc">This document is for sites running on VIP Go.</p> </div> <a href="/web/20200418222509/https://wpvip.com/documentation/vip-go/" class="docs-platform-label-content-link is-vip-go">Learn more</a> </div> </div> <div class="entry-content"> <div class="vip-lobby-toc"><h3>Contents</h3><ul class="items"><li><a href="#overview">Overview</a></li><li><a href="#access-to-the-vip-repository">Access to the VIP repository</a></li><li><a href="#what-can-be-put-in-the-vip-repository">What can be put in the VIP repository?</a></li><li><a href="#favicons">Favicons</a></li><li><a href="#submodules">Submodules</a></li><li><a href="#vip-go-mu-plugins">VIP Go MU plugins</a></li><li><a href="#developing-in-the-github-repo">Developing in the Github Repo</a></li><li><a href="#how-does-the-code-get-deployed">How does the code get deployed?</a></li><li><a href="#plugins-on%c2%a0vip-go">Plugins on VIP Go</a></li><li><a href="#sunrise-php"><code>sunrise.php</code></a></li><li><a href="#how-do-i-access-my-code">How do I access my code?</a></li><li><a href="#about-themes-on-vip-go">About themes on VIP Go</a><ul><li><a href="#child-themes">Child Themes</a><li><a href="#no-required-code-in-functions-php-and-no-vip-init-php">No required code in functions.php and no vip-init.php</a></ul></li><li><a href="#using%c2%a0private">Using <code>/private</code></a></li><li><a href="#what-versions-of-wordpress-and-jetpack-does-vip-go-use">What versions of WordPress and Jetpack does VIP Go use?</a></li><li><a href="#how-do-new-versions-of-wordpress-get-released">How do new versions of WordPress get released?</a></li></ul></div><h3 id="overview">Overview <a href="#overview" class="anchor">#</a></h3> <p>On the VIP platform, each site&#8217;s code lives within a repository (repo) in the <a href="https://web.archive.org/web/20200418222509/https://github.com/wpcomvip">WordPress.com VIP GitHub organization</a>. By default, this repository will be private but can be public if required. Once the repository is created, it can be used for development, or simply to push work to it as a Git remote and use any existing infrastructure (e.g. Beanstalk, Bitbucket, etc.)</p> <p>The codebase consists of core WordPress, with modifications made via a handful of mu-plugins that are <a href="https://web.archive.org/web/20200418222509/https://github.com/Automattic/vip-go-mu-plugins-built">available via GitHub</a>. All other custom code should be committed to the Git repository. When developing your site, it is vital that the same mu-plugins are used in the <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/developing-with-vip/local-development-for-vip-sites/">test environment</a>.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="access-to-the-vip-repository">Access to the VIP repository <a href="#access-to-the-vip-repository" class="anchor">#</a></h3> <p>There is no limit to how many GitHub users from an organization, development team, or agency can access the repo. VIP is happy to give nominated users <code>admin</code> access to the repo, allowing user management or application integration.</p> <p>Alternatively, VIP can add GitHub collaborators to a repo on a client&#8217;s behalf. To do so, please send through their GitHub usernames and whether they should have <code>read</code>, <code>write</code>, or <code>admin</code> access to the repo.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="what-can-be-put-in-the-vip-repository">What can be put in the VIP repository? <a href="#what-can-be-put-in-the-vip-repository" class="anchor">#</a></h3> <p>The repository for each VIP site (see <a href="https://web.archive.org/web/20200418222509/https://github.com/Automattic/vip-skeleton">vip-skeleton</a> for an example) has the following directory structure:</p> <ul> <li><strong>client-mu-plugins</strong>: for always active, global plugins (similar to mu-plugins) — see <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/managing-plugins/#installing-to-the-client-mu-plugins-directory">our plugin documentation</a> for more information.</li> <li><strong>images</strong>: Store your site&#8217;s favicons here, per <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/#favicons">this documentation</a>. All other public-facing images should be uploaded or <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/launching-with-vip/content-migration/">imported</a> to the WordPress dashboard or stored as part of your <code>/theme/</code> assets. </li> <li><strong>languages</strong>: For <code>.po</code> and <code>.mo</code> translation files, which specify the translated strings for the site. </li> <li><strong>plugins</strong>: Your site&#8217;s plugins — more details <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/managing-plugins/#installing-to-the-plugins-directory">here</a>.</li> <li><strong>private</strong>: Provides access to files that are not directly web accessible, but can be accessed by your theme or plugin code.</li> <li><strong>themes</strong>: Themes to be made available to your sites. We recommend keeping the default theme available for <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/testing-your-site/">testing purposes</a>.</li> <li><strong>vip-config</strong>: For custom configuration changes and additional <code>sunrise.php</code> <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/sunrise-php-on-vip-go/">code</a>. This folder&#8217;s <code>vip-config.php</code> file is used in place of <code>wp-config.php</code>.</li> </ul> <p>All of these directories are required and should not be removed. These directories will also be available on production web servers. Any additional directories created in your GitHub repository that are not included in the above list will not be mounted onto your site, and so will not be web-accessible.</p> <p>The plugins and themes directories are mapped to <code>wp-content/plugins/</code> and <code>wp-content/themes/</code> and should be treated like any other WordPress install.</p> <p>The <code>vip-config</code> directory contains a file named <code>vip-config.php</code>. This is where to put things usually found in <code>wp-config.php</code>. Not all settings can be changed, as we have optimized certain aspects of the WordPress install, but it is handy if you need to define something like an API key or secret. Note that most of WordPress is not available when this file is loaded and code should be limited to pure PHP.</p> <p>The <code>languages</code> directory is mapped to <code>wp-content/languages</code>, and should contain the <code>.po</code> and <code>.mo</code> files which specify the translated strings for the site.</p> <p>Requests for <code>favicon.ico</code> and <code>apple-touch-icon*.png</code> variant files are mapped to files with the same name within the <code>images</code> directory of the client repository. See the Favicons section below.</p> <p>The <code>private</code> directory is mapped to <code>/private/</code>, which is not web accessible; this might be used to store files streamed via PHP, e.g. a paid, commercial plugin which needs a purchase record checked before starting the download.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="favicons">Favicons <a href="#favicons" class="anchor">#</a></h3> <p>To account for multisites that use different domains, the specific order of lookup for <code>favicon.ico</code> and <code>apple-touch-icon*.png</code> variant files is:</p> <ul> <li><code>/images/$http-host/[favicon.ico|apple-touch-icon*.png]</code></li> <li><code>/images/[favicon.ico|apple-touch-icon*.png]</code></li> <li>1&#215;1 transparent pixel</li> </ul> <p>&#8230;where <code>$http_host</code> is the domain name.</p> <p>Multisites that use subfolder (e.g. <code>example.com/site-a</code>) do not have specific support, since requests for the root icon would be to <code>example.com/favicon.ico</code> anyway.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="submodules">Submodules <a href="#submodules" class="anchor">#</a></h3> <p>Submodules are a common way to include code by referencing another Git repository, you can read <a href="https://web.archive.org/web/20200418222509/https://git-scm.com/book/en/v2/Git-Tools-Submodules">more about submodules on the official Git SCM site</a>. We support the use of <em>public</em> Git Submodules, however <em>private</em> Git Submodules, i.e. submodules which you need to authenticate to access, are <em>not</em> supported.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="vip-go-mu-plugins">VIP Go MU plugins <a href="#vip-go-mu-plugins" class="anchor">#</a></h3> <p>The VIP Go MU (&#8220;Must Use&#8221;) plugins are deployed to all VIP Go WordPress applications. The MU plugins codebase provides VIP Go WordPress applications with integration to the VIP Go infrastructure, e.g. cache management, as well as various helper functions and performance enhancements commonly used by applications hosted on our platform.</p> <p>Our MU plugins are open sourced, and you can follow the development on our GitHub repository here:</p> <p><a href="https://web.archive.org/web/20200418222509/https://github.com/Automattic/vip-go-mu-plugins/">https://github.com/Automattic/vip-go-mu-plugins/</a></p> <p>If you simply want a &#8220;built&#8221; copy of the code, avoiding the complexities of submodules, then the simplest way to get that is from our &#8220;built&#8221; repository:</p> <p><a href="https://web.archive.org/web/20200418222509/https://github.com/Automattic/vip-go-mu-plugins-built/">https://github.com/Automattic/vip-go-mu-plugins-built/</a></p> <p>Your <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/local-vip-go-development-environment/">local development environment</a> <em>must</em> include a copy of our MU plugins.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="developing-in-the-github-repo">Developing in the Github Repo <a href="#developing-in-the-github-repo" class="anchor">#</a></h3> <p>If you choose to develop in a separate repo before pushing to the VIP repo, here are a few things to consider:</p> <ul> <li> Just like on WordPress.com sites, the VIP team may occasionally need to push security/performance related hotfixes to the <code>wpcomvip</code> repo. (We usually do these through PRs for greater visibility.) It&#8217;s important that you have a process in place that merges the changes back to your main development repo.</li> <li>It&#8217;s probably a good idea to have your development repo mirror the structure of <code>wpcomvip</code> repo directly to minimize complexities when pushing/pulling between them. Similarly, it&#8217;s a good idea to sync all commits as well (instead of doing large batched commits).</li> <li>For external dependencies (e.g. plugins), you can use submodules or subtrees (although, note that private submodules are not supported).</li> </ul> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="how-does-the-code-get-deployed">How does the code get deployed? <a href="#how-does-the-code-get-deployed" class="anchor">#</a></h3> <p>Each VIP Go site or environment tracks a specific branch of your repository. For example, the production environment will track the <code>master</code> branch; if you have requested other sites they will each have a specific branch they are tracking.</p> <p>If you have a child environment, the branch will always auto-deploy. For the production environment, the <code>master</code> branch will auto-deploy in the time leading up to and during the initial code review. For sites on Full or Enhanced review levels, once the initial review has been completed, we will enable the GitHub Pull Request workflow, which is covered <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/github-pr-reviews/" target="_blank" rel="noopener noreferrer">here</a>.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="plugins-on%c2%a0vip-go">Plugins on VIP Go <a href="#plugins-on%c2%a0vip-go" class="anchor">#</a></h3> <p>See our separate document on <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/managing-plugins/">installing and activating plugins on VIP Go</a>.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="sunrise-php"><code>sunrise.php</code> <a href="#sunrise-php" class="anchor">#</a></h3> <p>See the separate document <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/sunrise-php-on-vip-go/"><code>sunrise.php</code> on VIP Go</a>.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="how-do-i-access-my-code">How do I access my code? <a href="#how-do-i-access-my-code" class="anchor">#</a></h3> <p>See <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/accessing-your-code/">Accessing your code</a>.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="about-themes-on-vip-go">About themes on VIP Go <a href="#about-themes-on-vip-go" class="anchor">#</a></h3> <h4 id="theme-naming">Theme Naming</h4> <p>Themes in the VIP Go environment live in <code>WP_CONTENT_DIR . '/themes/'</code>. So if your organization is called Acme Kite Co., for example, your theme path might be <code>/themes/acmekites/</code>.</p> <p>If you anticipate setting up multiple themes for your site or if you are a developer working on different themes for different sites, you might need a naming scheme that further distinguishes themes, e.g. <code>/themes/acmekites-main/</code> and <code>/themes/acmekites-seasonal/</code>.</p> <h4 id="child-themes">Child Themes <a href="#child-themes" class="anchor">#</a></h4> <p>Child theme-ing works the same in this case as <a href="https://web.archive.org/web/20200418222509/https://developer.wordpress.org/themes/advanced-topics/child-themes/">child theming on self-hosted WordPress sites</a>. Just add another theme to your Git repository at <code>/themes</code>.  Because the themes on WordPress.com aren’t available in the Git repository, they will need to be added before they can be used as parent themes.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h4 id="no-required-code-in-functions-php-and-no-vip-init-php">No required code in functions.php and no vip-init.php <a href="#no-required-code-in-functions-php-and-no-vip-init-php" class="anchor">#</a></h4> <p>Unlike WordPress.com VIP, there is no required code in the theme’s <code>functions.php</code> file, nor do you need a <code>vip-init.php</code> file.</p> <h4 id="use-underscores-for-a-head-start">Use Underscores for a head start</h4> <p>The <a href="https://web.archive.org/web/20200418222509/http://underscores.me/">Underscores project</a> will generate a starter theme that can be used to get a head start on your theme development. It includes lean, well-commented, modern, HTML5 templates, minimal CSS that’s ready for you to build on, and a variety of tools to help you work efficiently in customizing your theme</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="using%c2%a0private">Using <code>/private</code> <a href="#using%c2%a0private" class="anchor">#</a></h3> <p>The <code id="using-private">/private</code> folder in your repo, if used, will provide access to files that are <em>not</em> web accessible, but can be accessed by your theme or plugins. We provide a constant, <code>WPCOM_VIP_PRIVATE_DIR</code>, which contains the path to the private folder, and you should always use this to access the <code>/private</code> folder.</p> <p>For example, if you place a file at <code>/private/sites.json</code> you can access that within your theme with:</p> <p><code>file_get_contents( WPCOM_VIP_PRIVATE_DIR . '/sites.json' );</code></p> <p>Please note that this constant is only available inside theme or plugin code; using it in <code>vip-config.php</code> is too early and will not produce the desired behaviour.</p> <p>No visitor will be able to access that file at any URL, unless deliberately exposed via the theme or a plugin.</p> <p>Like all code directories on VIP Go, the <code>/private</code> directory is not writable by PHP so you cannot save uploaded files to it.</p> <p>The <code>/private</code> folder is mapped to <code>/private</code>, in the root of the filesystem, on the VIP Go server.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="what-versions-of-wordpress-and-jetpack-does-vip-go-use">What versions of WordPress and Jetpack does VIP Go use? <a href="#what-versions-of-wordpress-and-jetpack-does-vip-go-use" class="anchor">#</a></h3> <p>Your website will be running the <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/wordpress-upgrades/">latest stable version</a> of WordPress and Jetpack at all times.</p> <p>In advance of a major version update for WordPress core or Jetpack (e.g. from 5.1 to 5.2) to VIP Go, as the beta testing period begins, WordPress.com VIP will post to the <a href="https://web.archive.org/web/20200418222509/https://lobby.vip.wordpress.com/">VIP Lobby</a>. The deployment of minor versions will not receive a Lobby post. Security updates will be deployed as soon as practicable, and will not receive a Lobby post.</p> <p>We provide the facility to <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/testing-jetpack-on-vip-go/">test beta and release candidates of Jetpack</a> of Jetpack on VIP Go.</p> <p>During the run-up to a new version of WordPress, we invite our clients to run their non-production sites against <code>trunk</code> (here is the core WordPress project <a href="https://web.archive.org/web/20200418222509/https://make.wordpress.org/core/handbook/contribute/svn/">explanation of <code>trunk</code> and other SVN terms</a>). If you&#8217;d like one or all of your non-production sites to track <code>trunk</code>, please get in touch. Sites tracking trunk will be updated to the latest <code>trunk</code> revision at least once a day, but we cannot guarantee the timing of this update.</p> <p class="toc-jump"><a href="#content">&uarr; Top &uarr;</a></p><h3 id="how-do-new-versions-of-wordpress-get-released">How do new versions of WordPress get released? <a href="#how-do-new-versions-of-wordpress-get-released" class="anchor">#</a></h3> <p>As a new release is tagged on WordPress.org we will begin rolling it out to our customers. This is a rolling upgrade process and is normally completed within 48 hours of an official release. A small subset of sites are tested before the wider release to ensure stability. WordPress.com VIP continually monitors all VIP sites to ensure they are up and serving a reasonable response code, and this process continues as we roll out releases to our customers.</p> <p>As a release approaches, you should test your site against WordPress core betas and release candidates as they are released, to ensure the upgrade process goes smoothly.</p> </div><!-- .entry-content --> <footer class="entry-footer"> <p class="documentation-license"> Documentation is licensed under a <a href="https://web.archive.org/web/20200418222509/https://href.li/?http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a> </p> </footer><!-- .entry-footer --> </div> </div><!-- #post-## --> </main><!-- #main --> <aside id="secondary" class="widget-area"> <div class="doc-three"> <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/">VIP Go Documentation</a><p><strong>The VIP platform</strong></p> <p>Discover the features and tools that make up our best-in-class managed cloud platform.</p> <ul> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/vip-dashboard/">VIP Dashboard</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/vip-cli/" aria-label="VIP C L I">VIP CLI</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/the-vip-code-analysis-bot/">The VIP code analysis bot</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/docs-category/vip-platform/">Learn more&#8230;</a></li> </ul> <p><strong>Launch</strong></p> <p>Walk through the steps for a successful site launch on VIP, from kick-off to take-off.</p> <ul> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/launching-with-vip/">Guidebook: Launching with VIP</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/vip-go-environments/" aria-label="VIP Go en-vie-ron-ments">VIP Go environments</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/accessing-vip-support/">Accessing VIP Support</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/docs-category/launch/">Learn more&#8230;</a></li> </ul> <p><strong>Develop</strong></p> <p>Getting the most out of VIP&#8217;s development workflows for developing and launching a site.</p> <ul> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/developing-with-vip/">Guidebook: Developing with VIP</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase/" aria-label="Understanding your VIP Code base">Understanding your VIP codebase</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/vip-code-review/">VIP code review</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/docs-category/develop/">Learn more&#8230;</a></li> </ul> <p><strong>Maintain and enhance</strong></p> <p>Ongoing development processes and best practices for maintaining, adding new features, or redesigning.</p> <ul> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/github-pr-reviews/" aria-label="Ghit hub PR reviews for VIP sites">GitHub PR reviews for VIP sites</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/user-security-best-practices/">User security best practices</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/creating-good-changesets/" aria-label="Creating good change sets">Creating good changesets</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/docs-category/maintain-enhance/">Learn more&#8230;</a></li> </ul> <p><strong>Reference</strong></p> <p>Tips &amp; tricks, how-tos, and other advanced topics for developing with VIP.</p> <ul> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/documentation-index/">Index of all documentation articles</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/geo-targeting-on-vip-go/">Geo targeting on VIP Go</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/documentation/vip-go/vip-go-faq/">VIP Go FAQ</a></li> <li><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/docs-category/reference/">Learn more&#8230;</a></li> </ul> </div> <div> <form role="search" method="get" class="search-form" action="https://web.archive.org/web/20200418222509/https://wpvip.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s"/> </label> <input type="hidden" name="post_type" value="vip_documentation"/><input type="submit" class="search-submit" value="Search"/> </form> </div> </aside><!-- #secondary --> </article><!-- #primary --> </div><!-- #content --> <div class="contact-form-wrapper"> <div class="contact-form-info"> <div class="contact-form-info-wrapper"> <div class="contact-form-content"> <h2 class="contact-form-title"><strong>Ready to get started?</strong></h2> <h3 class="contact-form-subtitle">Drop us a note.</h3> <p>No matter where you are in the planning process, we’re happy to help, and we’re actual humans here on the other side of the form. 👋 We’re here to discuss your challenges and plans, evaluate your existing resources or a potential partner, or even make some initial recommendations. And, of course, we’re here to help any time you’re in the market for some robust WordPress awesomeness.</p> </div> </div> </div> <div class="contact-form-form"> <div class="contact-form-bg"> <form action="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-admin/admin-post.php" method="post" id="contact" class="contact-form"> <input type="hidden" name="action" value="pardot_form"> <input type="hidden" name="nonce" value="7c965e01f5"> <input type="hidden" name="current_url" value="https://wpvip.com/documentation/vip-go/understanding-your-vip-go-codebase"> <input type="hidden" name="oid" value="00DE0000000YdpT"> <input type="hidden" name="retURL" value="https://wpvip.com/thanks/"> <input type="hidden" name="lead_source" value="VIP contact form"> <input type="hidden" name="utm_source__c" id="utm_source__c"> <input type="hidden" name="utm_medium__c" id="utm_medium__c"> <input type="hidden" name="utm_campaign__c" id="utm_campaign__c"> <input type="hidden" name="utm_term__c" id="utm_term__c"> <input type="hidden" name="utm_content__c" id="utm_content__c"> <input type="hidden" name="keyword__c" id="keyword__c"> <input type="hidden" name="adgroupid__c" id="adgroupid__c"> <input type="hidden" name="device__c" id="device__c"> <input type="hidden" name="matchtype__c" id="matchtype__c"> <input type="hidden" name="creative__c" id="creative__c"> <input type="hidden" name="gclid__c" id="gclid__c"> <input type="hidden" name="00NE00000036RnI" value="" id="referrer-url"> <div class="contact-form-fields"> <div class="firstname contact-form__text-field"> <label for="first_name">First Name *</label> <span class="contact-form-field"><input id="first_name" maxlength="100" name="first_name" type="text" required/></span> </div> <div class="lastname contact-form__text-field"> <label for="last_name">Last Name *</label> <span class="contact-form-field"><input id="last_name" maxlength="100" name="last_name" type="text" required/></span> </div> <div class="email contact-form__text-field"> <label for="email">Email Address *</label> <span class="contact-form-field"><input id="email" name="email" type="email" required/></span> </div> <div class="phone contact-form__text-field"> <label for="phone">Phone Number</label> <span class="contact-form-field"><input id="phone" name="phone" type="text"/></span> </div> <div class="jobtitle contact-form__text-field"> <label for="title">Title</label> <span class="contact-form-field"><input id="title" name="title" type="text"/></span> </div> <div class="company contact-form__text-field"> <label for="company">Company</label> <span class="contact-form-field"><input id="company" name="company" type="text"/></span> </div> <div class="location contact-form__text-field"> <label for="00N44000006TbKL">Location</label> <span class="contact-form-field"><input id="00N44000006TbKL" name="00N44000006TbKL" type="text"/></span> </div> <div class="industry contact-form__text-field contact-form__select-field"> <label for="industry">Industry</label> <span class="contact-form-field"> <select id="industry" name="industry"> <option value="">-- Select --</option> <option value="Consumer Products">Consumer Products</option> <option value="Digital Agency / Web Development">Digital Agency / Web Development</option> <option value="Education">Education</option> <option value="Financial Services">Financial Services</option> <option value="Government">Government</option> <option value="Healthcare / Pharmaceuticals">Healthcare / Pharmaceuticals</option> <option value="Media / Publishing">Media / Publishing</option> <option value="Marketing / Communications / PR">Marketing / Communications / PR</option> <option value="Retail">Retail</option> <option value="Other">Other</option> </select> </span> </div> <div class="message contact-form__text-field contact-form__textarea"> <label for="description">Message *</label> <span class="contact-form-textarea"><textarea id="description" name="description" placeholder="Tell us a bit about your company and the WordPress VIP services you’re interested in" required></textarea></span> <div class="recaptcha-text"> This site is protected by reCAPTCHA and the Google <a href="https://web.archive.org/web/20200418222509/https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://web.archive.org/web/20200418222509/https://policies.google.com/terms">Terms of Service</a> apply. </div> </div> </div> <div class="contact-form-submit"> <button type="submit" class="button"><span class="button-inner">Send</span></button> </div> </form> </div> </div> </div> <footer id="colophon" class="site-footer global-padding"> <div class="site-info"> <div class="site-footer-logo"> <a href="https://web.archive.org/web/20200418222509/https://wpvip.com/" rel="home"><svg class="svg-icon svg-icon-vip" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 200 87.7"><path d="M43.8 0C19.7 0 0 19.7 0 43.8 0 68 19.7 87.7 43.8 87.7 68 87.7 87.7 68 87.7 43.8 87.7 19.7 68 0 43.8 0zM4.4 43.8c0-5.7 1.2-11.1 3.4-16l18.8 51.5C13.5 72.9 4.4 59.4 4.4 43.8zm39.4 39.4c-3.9 0-7.6-.6-11.1-1.6l11.8-34.4 12.1 33.2c.1.2.2.4.3.5-4.1 1.5-8.5 2.3-13.1 2.3zm5.5-57.8c2.4-.1 4.5-.4 4.5-.4 2.1-.3 1.9-3.4-.3-3.2 0 0-6.4.5-10.5.5-3.9 0-10.4-.5-10.4-.5-2.1-.1-2.4 3.1-.2 3.2 0 0 2 .2 4.1.4l6.1 16.8L34 68 19.7 25.4c2.4-.1 4.5-.4 4.5-.4 2.1-.3 1.9-3.4-.3-3.2 0 0-6.4.5-10.5.5h-2.5C18 11.5 30.1 4.4 43.8 4.4c10.3 0 19.6 3.9 26.6 10.3h-.5c-3.9 0-6.6 3.4-6.6 7 0 3.2 1.9 6 3.9 9.2 1.5 2.6 3.2 6 3.2 10.9 0 3.4-1 7.6-3 12.7l-3.9 13.1-14.2-42.2zm14.3 52.5l12-34.8c2.2-5.6 3-10.1 3-14.1 0-1.5-.1-2.8-.3-4.1 3.1 5.6 4.8 12.1 4.8 18.9.1 14.6-7.7 27.3-19.5 34.1zM127.3 23.6l-8.9 26.1c-.9 3.2-1.7 6.2-2 9h-.2c-.2-2.8-1-5.9-2-9l-8.9-26.1H93.6l16.8 44.1h12l16.8-44.1h-11.9zM145 23.6l-3.3 8.7v35.3h11.8v-44M195.6 28.8c-2.9-4-7-6-12.2-6-5.5 0-9.3 2.2-12.1 6.5h-.6l-1.7-5.7h-9.6v64.1h11.8V69.2c0-.6-.2-2.7-.6-6.4h.6c2.9 3.8 6.6 5.6 11.8 5.6 3.4 0 6.4-.9 9-2.7 2.5-1.8 4.5-4.5 5.9-7.9 1.4-3.5 2.1-7.6 2.1-12.3 0-7.1-1.5-12.7-4.4-16.7zm-15.5 29.9c-3 0-5.3-1-6.7-3.1-1.4-2-2.1-5.4-2.1-10.2v-1.3c.1-4.2.8-7.2 2.1-9 1.4-1.8 3.5-2.7 6.5-2.7 2.8 0 4.9 1.1 6.2 3.3 1.3 2.2 2 5.4 2 9.8.1 8.7-2.6 13.2-8 13.2z"/></svg></a> </div> <nav class="site-footer-menus clearfix"> <hr class="site-footer-decoration"/> <div class="site-footer-menu"><ul id="menu-footer-1" class="menu"><li id="menu-item-29031" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29031"><a href="/web/20200418222509/https://wpvip.com/case-studies/">Case Studies</a></li> <li id="menu-item-29033" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29033"><a href="/web/20200418222509/https://wpvip.com/services/">Services</a></li> <li id="menu-item-29035" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29035"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/infrastructure/">Infrastructure</a></li> <li id="menu-item-29273" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29273"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/support/">Support</a></li> <li id="menu-item-29034" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29034"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/our-approach/">Our Approach</a></li> <li id="menu-item-29036" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29036"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/capabilities/">Capabilities</a></li> </ul></div><div class="site-footer-menu"><ul id="menu-footer-2" class="menu"><li id="menu-item-29037" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29037"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/partners/">Partners</a></li> <li id="menu-item-29038" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29038"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/partners/agency-partners/">Agency Partners</a></li> <li id="menu-item-29039" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29039"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/partners/technology-partners/">Technology Partners</a></li> </ul></div><div class="site-footer-menu"><ul id="menu-footer-3" class="menu"><li id="menu-item-29040" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-29040"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/news/">News</a></li> <li id="menu-item-29041" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29041"><a href="/web/20200418222509/https://wpvip.com/events/">Events</a></li> <li id="menu-item-29042" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29042"><a href="/web/20200418222509/https://wpvip.com/documentation/">Documentation</a></li> <li id="menu-item-29311" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29311"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/careers/">Careers</a></li> <li id="menu-item-29043" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29043"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/contact/">Contact</a></li> </ul></div><div class="site-footer-menu"><ul id="menu-footer-4" class="menu"><li id="menu-item-29868" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29868"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/security/">Security at WordPress VIP</a></li> <li id="menu-item-29046" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-29046"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/privacyshield/">Privacy Shield</a></li> <li id="menu-item-31288" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31288"><a href="https://web.archive.org/web/20200418222509/https://wpvip.com/vip-and-the-gdpr/">GDPR</a></li> <li id="menu-item-29044" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29044"><a href="https://web.archive.org/web/20200418222509/https://automattic.com/privacy/">Privacy</a></li> <li id="menu-item-29045" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-29045"><a href="https://web.archive.org/web/20200418222509/https://wordpress.com/tos/">Terms of Service</a></li> </ul></div> </nav> <div class="site-creator"> <p> <a href="https://web.archive.org/web/20200418222509/https://automattic.com/"> An <span class="screen-reader-text">Automattic</span><svg class="svg-icon svg-icon-automattic" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 200 15.4"><path d="M72.5 15.4c-5.1 0-8.4-3.7-8.4-7.5v-.4c0-3.9 3.3-7.5 8.4-7.5 5.1 0 8.4 3.6 8.4 7.5V8c0 3.8-3.3 7.4-8.4 7.4zm5.7-7.9c0-2.8-2-5.3-5.7-5.3s-5.7 2.5-5.7 5.3v.3c0 2.8 2 5.3 5.7 5.3s5.7-2.5 5.7-5.3v-.3z" fill="#3298CB"/><path d="M15 14.9l-1.9-3.6H4.7l-1.8 3.6H0L7.8.5H10l7.9 14.4H15zM8.8 3.3l-3.1 6h6.4l-3.3-6zm21.4 12.1c-5.2 0-7.6-2.8-7.6-6.5V.5h2.7V9c0 2.7 1.7 4.2 5.1 4.2 3.4 0 4.8-1.6 4.8-4.2V.5h2.7v8.4c0 3.6-2.3 6.5-7.7 6.5zM52.9 2.8v12.1h-2.7V2.8h-6.3V.5h15.3v2.2h-6.3zM105 14.9V3.5l-.7 1.3-6 10.1H97L91 4.8l-.7-1.3v11.4h-2.6V.5h3.7l5.7 9.9.7 1.2.7-1.2 5.6-9.9h3.7v14.4H105zm23.1 0l-1.9-3.6h-8.4l-1.8 3.6h-3L120.8.5h2.2l7.9 14.4h-2.8zm-6.2-11.6l-3.1 6h6.4l-3.3-6zm19.9-.5v12.1h-2.7V2.8h-6.3V.5h15.3v2.2h-6.3zm19.8 0v12.1h-2.7V2.8h-6.3V.5h15.3v2.2h-6.3zm12.9 12.1v-13c1.1 0 1.5-.6 1.5-1.4h1.1v14.4h-2.6zm23.8-10.3c-1.3-1.2-3.2-2.3-5.8-2.3-3.8 0-6 2.6-6 5.4V8c0 2.7 2.2 5.3 6.2 5.3 2.4 0 4.4-1.1 5.6-2.3l1.6 1.7c-1.6 1.6-4.3 2.9-7.4 2.9-5.4 0-8.7-3.5-8.7-7.4v-.6c0-3.9 3.6-7.6 8.9-7.6 3 0 5.8 1.3 7.3 2.9l-1.7 1.7zM74.3 5c.5.3.6 1 .3 1.5l-2.5 3.8c-.3.5-1 .6-1.5.3s-.6-1-.3-1.5l2.5-3.8c.4-.5 1-.6 1.5-.3z"/></svg> Invention </a> </p> </div><!-- .site-creator --> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.15"></script> <script> window.lodash = _.noConflict(); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=7.4.4"></script> <script> ( 'fetch' in window ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-fetch.min.js?ver=3.0.0"></scr' + 'ipt>' );( document.contains ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-node-contains.min.js?ver=3.42.0"></scr' + 'ipt>' );( window.DOMRect ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-dom-rect.min.js?ver=3.42.0"></scr' + 'ipt>' );( window.URL && window.URL.prototype && window.URLSearchParams ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-url.min.js?ver=3.6.4"></scr' + 'ipt>' );( window.FormData && window.FormData.prototype.keys ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-formdata.min.js?ver=3.0.12"></scr' + 'ipt>' );( Element.prototype.matches && Element.prototype.closest ) || document.write( '<script src="https://web.archive.org/web/20200418222509/https://wpvip.com/wp-includes/js/dist/vendor/wp-polyfill-element-closest.min.js?ver=2.0.2"></scr' + 'ipt>' ); </script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJyFy0EKgCAQQNELpUMLQxfRWaY0GDOVZiTo9LVoGbT+78NZFeUlNR8YIoMnFsAmpeqdso7cwZeYU5n/wLIpDgdhoguFSlY+rNiSqIrHE9592sfeWDNYZ5yJN95MM7I="></script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/vendor/react.min.js?ver=16.9.0"></script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/vendor/react-dom.min.js?ver=16.9.0"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJx9zTEOwyAMQNEL1UEdqJKh6lkQWIopYIJtpbl9p24V+9P/7uxALRZLKC6LSyTqUGLoCLvWslRqS5ab++sKVmw6NSQgeyiFT8DDwjwYuXYWnJqd+S1TkbAPjEExTVkfxIP0gsPQ5s+ByT4w2JTaT77q8+5X/1g3v/n8BfuIeCw="></script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/data.min.js?ver=e80048e7b309581a40e44b8bd8aaba41"></script> <script> ( function() { var userId = 0; var storageKey = "WP_DATA_USER_" + userId; wp.data .use( wp.data.plugins.persistence, { storageKey: storageKey } ); wp.data.plugins.persistence.__unstableMigrate( { storageKey: storageKey } ); } )(); </script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJx9yjEOgCAMAMAPCQ0DBgbjYyiJJbQYW+P3XRwN8x08pyMp/caq0BSQ1AAHeybxTRf488O4uypGRlWnk0KSadBjXFYG1m/tvIWY4ppyzLG98zE4Ww=="></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/blocks.min.js?ver=423068d7079f57cf9f02458ccb4a6131"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/url.min.js?m=1585689595g"></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/api-fetch.min.js?ver=b437dd9d1118e698b1b85961e759bf03"></script> <script> wp.apiFetch.use( wp.apiFetch.createRootURLMiddleware( "https://web.archive.org/web/20200418222509/https://wpvip.com/wp-json/" ) ); wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "5d58148366" ); wp.apiFetch.use( wp.apiFetch.nonceMiddleware ); wp.apiFetch.use( wp.apiFetch.mediaUploadMiddleware ); wp.apiFetch.nonceEndpoint = "https://web.archive.org/web/20200418222509/https://wpvip.com/wp-admin/admin-ajax.php?action=rest-nonce"; </script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??/wp-includes/js/dist/dom-ready.min.js,/wp-includes/js/dist/a11y.min.js?m=1585689595j"></script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/vendor/moment.min.js?ver=2.22.2"></script> <script> moment.locale( 'en_US', {"months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"week":{"dow":0},"longDateFormat":{"LT":"g:i a","LTS":null,"L":null,"LL":"F j, Y","LLL":"F j, Y g:i a","LLLL":null}} ); </script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/keycodes.min.js?ver=46e6adf844a1e989da37d39c64fca9e2"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWT8ksLtEvKMrMzSzJLEst1svNzNPLKtbRx6asKDM5Q7cktaIEr6ryxKK8zLx0qBr7XFtDUwtTMwtLU0vTLACgWi1C"></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/components.min.js?ver=90861a4430fed183d94d6750cb7ae6f4"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJx9zDEOgCAMQNELiY0DRgbjWRRIBJQaWiTeXhY3w/aHlw/lEi7qIxtL4AmMI4Zgnw3XZATtmFhnpv50sffUwR9nDDaKo2aT3c6Wq/6aqGAyGnP81HLOg5zkOCmppH8BTKE/pQ=="></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/block-editor.min.js?ver=704b9a6d689b18b6982a8b2ae902e7ec"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??/wp-includes/js/dist/core-data.min.js,/wp-includes/js/dist/data-controls.min.js?m=1585689595j"></script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/date.min.js?ver=87f9d64d7050eeeffa6a6f670f0c546e"></script> <script> wp.date.setSettings( {"l10n":{"locale":"en_US","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthsShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"weekdaysShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"meridiem":{"am":"am","pm":"pm","AM":"AM","PM":"PM"},"relative":{"future":"%s from now","past":"%s ago"}},"formats":{"time":"g:i a","date":"F j, Y","datetime":"F j, Y g:i a","datetimeAbbreviated":"M j, Y g:i a"},"timezone":{"offset":-4,"string":"America\/New_York"}} ); </script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/media-utils.min.js?ver=591443ff969b73a6db3bc4d8cc57722d"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/notices.min.js?m=1585689595g"></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/server-side-render.min.js?ver=0982eea1efaf70db5d7a28a18b7f8bfa"></script> <script> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "default", { "locale_data": { "messages": { "": {} } } } ); </script> <script src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/wp-includes/js/dist/editor.min.js?ver=bb928f624169f992ec79a4889c7abf35"></script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://wpvip.com/_static/??-eJyVkeFOwzAMhF+I1NtQNfiBeBSUumZzFydR7FDB0xMoQxUgbfxKzsl3uktgzg5TNIoGOdQDR4U5v3DGJG4ICU8KI6vBsu+GymHsJr2BFWhHEvrgGtRQt9ts9ws1KbSZpKj/YsRzvArQghB4gGrirHg8UbmKM5IcvLW5pLGGtqIPwVlyHo1T/CHPnhwx1LHdbhlrHKkopkKd/E4r1Z2fU8kXPAIFr8aYC6l+F332SKZOsXC2Cz4TWW4N4amlgM9/AJvZjIozFgocLyX5wyH4t1fH4g9LqZVce617N0ky0Ph1/igP2/5uv+l39/3t9A4fXtm0"></script> <!-- cookie banner [start] --> <script type="text/javascript"> (function() { 'use strict'; var CACHE_INTERVAL = 7 * 24 * 60 * 60 * 1000; var v = Math.floor( new Date().getTime() / CACHE_INTERVAL ); jQuery.ajax({ async: true, cache: true, url: 'https://web.archive.org/web/20200418222509/https://s1.wp.com/wp-content/lib/cookie-banner/cookie-banner-v3.0.js?v=' + v, dataType: "script", success: function() { window.a8cCookieBanner.init( {"text":"Our websites and dashboards use cookies. By continuing, you agree to their use. <a target=\"_blank\" href=\"https:\/\/automattic.com\/cookies\">Learn more<\/a>, including how to control cookies.","buttonText":"Got It!","cookieName":"sensitive_pixel_option","skipBanner":false} ); }, }); })(); </script> <!-- cookie banner [end] --> <script> jQuery( window.document ).on( 'a8c-cookie-banner:fire-sensitive-pixels', function() { var cbk = window.a8cCookieBanner.kit; if ( cbk.doNotTrack() ) { return; } function fireGoogleAnalytics() { cbk.loadGoogleAnalytics(); ga('create', 'UA-52447-45', 'auto'); ga('send', 'pageview'); } function fireFacebook() { cbk.loadFacebook(); fbq('init', '823166884443641'); fbq('track', 'PageView'); } function fireTwitter() { cbk.loadTwitter(); twq('init','nzd6e'); twq('track','PageView'); } function fireQuora() { !function(q,e,v,n,t,s){if(q.qp) return; n=q.qp=function(){n.qp?n.qp.apply(n,arguments):n.queue.push(arguments);}; n.queue=[];t=document.createElement(e);t.async=!0;t.src=v; s=document.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s);}(window, 'script', 'https://web.archive.org/web/20200418222509/https://a.quora.com/qevents.js'); qp('init', '8e42680afae64958b1a9eb16902d2b10'); qp('track', 'ViewContent'); } function fireDoubleClick() { var axel = Math.random() + ""; var a = axel * 10000000000000; cbk.appendIFrame( 'https://web.archive.org/web/20200418222509/https://6355556.fls.doubleclick.net/activityi;src=6355556;type=wordp0;cat=negat0;u4=[UserIDLogIn];u5=[UserIDNLogIn];u6=[Pagetitle];u7=[SessionID];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=' + a + '?' ); } function firePardot() { piAId = '603321'; piCId = '12781'; piHostname = 'pi.pardot.com'; (function(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.src = ('https:' == document.location.protocol ? 'https://web.archive.org/web/20200418222509/https://pi' : 'https://web.archive.org/web/20200418222509/http://cdn') + '.pardot.com/pd.js'; var c = document.getElementsByTagName('script')[0]; c.parentNode.insertBefore(s, c); } )(window, document, 'script'); } fireGoogleAnalytics(); fireFacebook(); fireTwitter(); fireQuora(); fireDoubleClick(); firePardot(); } ); </script> <script type="text/javascript" src="https://web.archive.org/web/20200418222509js_/https://stats.wp.com/e-202016.js" async="async" defer="defer"></script> <script type="text/javascript"> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:8.4.2',blog:'160028863',post:'23622',tz:'-4',srv:'wpvip.com'} ]); _stq.push([ 'clickTrackerInit', '160028863', '23622' ]); </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"949ceaf672","applicationID":"199533422","transactionName":"MQZWYhAFXhdYAUBfWwhMdVUWDV8KFhFdWFMKBhlACxRvAFYBQVtRCBdVQgsLXg==","queueTime":0,"applicationTime":242,"atts":"HUFBFFgfTUgbAxYMTxse","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html> <!-- FILE ARCHIVED ON 22:25:09 Apr 18, 2020 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 23:44:28 Feb 17, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.757 exclusion.robots: 0.028 exclusion.robots.policy: 0.016 esindex: 0.014 cdx.remote: 8.658 LoadShardBlock: 171.933 (6) PetaboxLoader3.datanode: 722.853 (7) load_resource: 678.698 PetaboxLoader3.resolve: 84.675 -->

Pages: 1 2 3 4 5 6 7 8 9 10