CINXE.COM
Access-Controlled Files · WordPress VIP Documentation
<!DOCTYPE html> <html lang="en-US"> <head> <meta http-equiv="content-type" content="text/html" charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" /> <link rel="profile" href="https://gmpg.org/xfn/11" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO plugin v23.5 - https://yoast.com/wordpress/plugins/seo/ --> <title>Access-Controlled Files · WordPress VIP Documentation</title> <meta name="description" content="Using WordPress VIP's Private Files functionality, you can restrict access to files and media uploaded to your WordPress Media Library." /> <link rel="canonical" href="https://docs.wpvip.com/access-and-routing/access-controlled-files/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Access-Controlled Files · WordPress VIP Documentation" /> <meta property="og:description" content="Using WordPress VIP's Private Files functionality, you can restrict access to files and media uploaded to your WordPress Media Library." /> <meta property="og:url" content="https://docs.wpvip.com/access-and-routing/access-controlled-files/" /> <meta property="og:site_name" content="WordPress VIP Documentation" /> <meta property="article:modified_time" content="2024-11-14T02:13:30+00:00" /> <meta property="og:image" content="https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/screenshot.png" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="900" /> <meta property="og:image:type" content="image/png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:label1" content="Est. reading time" /> <meta name="twitter:data1" content="7 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://docs.wpvip.com/access-and-routing/access-controlled-files/","url":"https://docs.wpvip.com/access-and-routing/access-controlled-files/","name":"Access-Controlled Files · WordPress VIP Documentation","isPartOf":{"@id":"https://docs.wpvip.com/#website"},"datePublished":"2021-08-18T23:59:33+00:00","dateModified":"2024-11-14T02:13:30+00:00","description":"Using WordPress VIP's Private Files functionality, you can restrict access to files and media uploaded to your WordPress Media Library.","breadcrumb":{"@id":"https://docs.wpvip.com/access-and-routing/access-controlled-files/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://docs.wpvip.com/access-and-routing/access-controlled-files/"]}]},{"@type":"BreadcrumbList","@id":"https://docs.wpvip.com/access-and-routing/access-controlled-files/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Access & routing","item":"https://docs.wpvip.com/access-and-routing/"},{"@type":"ListItem","position":2,"name":"Access-Controlled Files"}]},{"@type":"WebSite","@id":"https://docs.wpvip.com/#website","url":"https://docs.wpvip.com/","name":"WordPress VIP Documentation","description":"WordPress VIP Documentation","publisher":{"@id":"https://docs.wpvip.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://docs.wpvip.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://docs.wpvip.com/#organization","name":"WordPress VIP","url":"https://docs.wpvip.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://docs.wpvip.com/#/schema/logo/image/","url":"https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/wp-vip-logo.png","contentUrl":"https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/wp-vip-logo.png","width":962,"height":900,"caption":"WordPress VIP"},"image":{"@id":"https://docs.wpvip.com/#/schema/logo/image/"}}]}</script> <!-- / Yoast SEO plugin. --> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel="alternate" type="application/rss+xml" title="WordPress VIP Documentation » Feed" href="https://docs.wpvip.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="WordPress VIP Documentation » Comments Feed" href="https://docs.wpvip.com/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/docs.wpvip.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.1"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-2' href='https://docs.wpvip.com/wp-includes/css/dist/block-library/style.min.css?m=1732206022g' type='text/css' media='all' /> <style id='safe-svg-svg-icon-style-inline-css'> .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%} </style> <style id='tab-group-tabs-style-inline-css'> .wp-block-tab-group-tabs{margin-bottom:1.41575em}.wp-block-tab-group-tabs ul.tab-labels{margin:0;padding:0}.wp-block-tab-group-tabs ul.tab-labels li{border-bottom-width:0;list-style:none;margin:0;padding:0}.wp-block-tab-group-tabs ul.tab-labels li label{background:#f9f5f5;border:solid #ddd;border-radius:10px 10px 0 0;border-width:1px 1px 0;color:#444;float:left;padding:15px 25px}.wp-block-tab-group-tabs ul.tab-labels li label:hover{background:#f2f2f2;cursor:pointer}.wp-block-tab-group-tabs ul.tab-labels li label:active{background:#fff}.wp-block-tab-group-tabs ul.tab-labels li:not(:last-child) label{border-right-width:0}.wp-block-tab-group-tabs ul.tab-labels li.active label{background:#fff;color:#111;position:relative}.wp-block-tab-group-tabs ul.tab-labels li.active label:hover{cursor:default}.wp-block-tab-group-tabs ul.tab-labels li.active label:after{background:#fff;bottom:-1px;content:"";display:block;height:2px;left:0;position:absolute;width:100%}.wp-block-tab-group-tabs section{background:#fff;border:1px solid #ddd;clear:both;padding:20px;width:100%}.wp-block-tab-group-tabs section div.tab-panel{display:none}.wp-block-tab-group-tabs section div.tab-panel.active{display:block}.wp-block-tab-group-tabs section div.tab-panel p:last-child{margin-bottom:0}@media only screen and (min-width:768px){.wp-block-tab-group-tabs.layout-left{display:flex;width:100%}.wp-block-tab-group-tabs.layout-left ul.tab-labels li{display:flex;flex-direction:column}.wp-block-tab-group-tabs.layout-left ul.tab-labels li label{border-bottom-width:1px;border-radius:10px 0 0 10px;border-right-width:0}.wp-block-tab-group-tabs.layout-left ul.tab-labels li:not(:last-child) label{border-bottom-width:0}.wp-block-tab-group-tabs.layout-left ul.tab-labels li.active label:after{height:100%;left:unset;right:-1px;top:0;width:2px}.wp-block-tab-group-tabs.layout-left .tab-content,.wp-block-tab-group-tabs.layout-left .tab-content .tab-panel.active{display:flex;flex:1;flex-direction:column}.wp-block-tab-group-tabs.layout-left .tab-content .tab-panel.active .wp-block-cgb-block-page-section{flex:1}.wp-block-tab-group-tabs.layout-left .tab-content .tab-panel.active>*{padding:0 2rem}} </style> <style id='wp-parsely-recommendations-style-inline-css'> .parsely-recommendations-list-title{font-size:1.2em}.parsely-recommendations-list{list-style:none;padding:unset}.parsely-recommendations-cardbody{overflow:hidden;padding:.8em;text-overflow:ellipsis;white-space:nowrap}.parsely-recommendations-cardmedia{padding:.8em .8em 0} </style> <link rel='stylesheet' id='all-css-10' href='https://docs.wpvip.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpobGxkZmBkYGQMARIMu1Q==' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <style id='elasticpress-facet-style-inline-css'> .widget_ep-facet input[type=search],.wp-block-elasticpress-facet input[type=search]{margin-bottom:1rem}.widget_ep-facet .searchable .inner,.wp-block-elasticpress-facet .searchable .inner{max-height:20em;overflow:scroll}.widget_ep-facet .term.hide,.wp-block-elasticpress-facet .term.hide{display:none}.widget_ep-facet .empty-term,.wp-block-elasticpress-facet .empty-term{opacity:.5;position:relative}.widget_ep-facet .empty-term:after,.wp-block-elasticpress-facet .empty-term:after{bottom:0;content:" ";display:block;left:0;position:absolute;right:0;top:0;width:100%;z-index:2}.widget_ep-facet .level-1,.wp-block-elasticpress-facet .level-1{padding-left:20px}.widget_ep-facet .level-2,.wp-block-elasticpress-facet .level-2{padding-left:40px}.widget_ep-facet .level-3,.wp-block-elasticpress-facet .level-3{padding-left:60px}.widget_ep-facet .level-4,.wp-block-elasticpress-facet .level-4{padding-left:5pc}.widget_ep-facet .level-5,.wp-block-elasticpress-facet .level-5{padding-left:75pt}.widget_ep-facet input[disabled],.wp-block-elasticpress-facet input[disabled]{cursor:pointer;opacity:1}.widget_ep-facet .term a,.wp-block-elasticpress-facet .term a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.widget_ep-facet .term a:hover .ep-checkbox,.wp-block-elasticpress-facet .term a:hover .ep-checkbox{background-color:#ccc}.ep-checkbox{-webkit-box-align:center;-ms-flex-align:center;-ms-flex-negative:0;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:#eee;display:-webkit-box;display:-ms-flexbox;display:flex;flex-shrink:0;height:1em;justify-content:center;margin-right:.25em;width:1em}.ep-checkbox:after{border:solid #fff;border-width:0 .125em .125em 0;content:"";display:none;height:.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:.25em}.ep-checkbox.checked{background-color:#5e5e5e}.ep-checkbox.checked:after{display:block} </style> <link rel='stylesheet' id='all-css-14' href='https://docs.wpvip.com/_static/??-eJxVjl0KwkAMhC9kGrVY+yKeZZsNGt0/NlnE27sohfo0wzB8M/gqQDkZJ8PYoIR2k6So7CrdkYNTEyqVVdGLGlI3tcfGHkpWU1hCpieovQPrECUNvbLDjpVEoXlWfChS9hyl1lw39q+9nqAgXWDzxc0EPtO6xF6sY5wqm+LSJHj8rkN0P941Xg7n8Xiapv04fwDWmFOM' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='privacy-toolset-css-css' href='https://docs.wpvip.com/wp-content/plugins/vip-privacy-toolset/assets/privacy-consent-banner.css?ver=1.0.0' media='all' /> <link rel='stylesheet' id='all-css-20' href='https://docs.wpvip.com/wp-content/themes/wpvip-docs/assets/build/main.css?m=1732566038g' type='text/css' media='all' /> <script type="text/javascript" src="https://docs.wpvip.com/_static/??-eJzTLy/QzcxLzilNSS3WzwKiwtLUokoopZebmaeXVayjj0+Rbm5melFiSSpUsX2uraG5sZGRgZmBkXEWAK8tIhI=" ></script><link rel="https://api.w.org/" href="https://docs.wpvip.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://docs.wpvip.com/wp-json/wp/v2/pages/3169" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://docs.wpvip.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.1" /> <link rel='shortlink' href='https://docs.wpvip.com/?p=3169' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://docs.wpvip.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdocs.wpvip.com%2Faccess-and-routing%2Faccess-controlled-files%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://docs.wpvip.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdocs.wpvip.com%2Faccess-and-routing%2Faccess-controlled-files%2F&format=xml" /> <style>img#wpstats{display:none}</style> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"Access-Controlled Files","url":"https:\/\/docs.wpvip.com\/access-and-routing\/access-controlled-files\/","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/docs.wpvip.com\/access-and-routing\/access-controlled-files\/"},"thumbnailUrl":"","image":{"@type":"ImageObject","url":""},"articleSection":"Access & Routing","author":[{"@type":"Person","name":"WordPress VIP Documentation"}],"creator":["WordPress VIP Documentation"],"publisher":{"@type":"Organization","name":"WordPress VIP Documentation","logo":"https:\/\/docs.wpvip.com\/wp-content\/uploads\/sites\/2\/2023\/07\/cropped-cropped-site-logo.png"},"keywords":["tech-ref"],"dateCreated":"2021-08-18T23:59:33Z","datePublished":"2021-08-18T23:59:33Z","dateModified":"2024-11-14T02:13:30Z"}</script> <script src="https://js-wc.site24x7static.com/site24x7/client/statusiq_status_widget/statusiq-status-widget.js" nomodule></script> <script src="https://js-wc.site24x7static.com/site24x7/client/statusiq_status_widget/statusiq-status-widget.esm.js" type="module"></script> <!-- Google Tag Manager --> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-575BNTT');</script> <!-- End Google Tag Manager --> <link rel="icon" href="https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/cropped-cropped-site-logo.png?w=32" sizes="32x32" /> <link rel="icon" href="https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/cropped-cropped-site-logo.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/cropped-cropped-site-logo.png?w=180" /> <meta name="msapplication-TileImage" content="https://docs.wpvip.com/wp-content/uploads/sites/2/2023/07/cropped-cropped-site-logo.png?w=270" /> <style type="text/css" id="wp-custom-css"> .home ul.wp-block-post-template-is-layout-grid>li:before, .home ul.wp-block-post-template-is-layout-flow>li:before {content: "";} .home div.wp-block-group {padding:0 !important;} .home .wp-block-post-title { margin-top: 5px; } .home .wp-block-query.recent li { padding: 25px; } .home .wp-block-query.recent li .wp-block-group-is-layout-flex { flex-direction: row; align-items: baseline; } .home .wp-block-query.recent li .wp-block-group-is-layout-flex h3 { width: 100%; } .home .wp-block-query.recent li .wp-block-group-is-layout-flex .wp-block-post-date { font-size: 14px; color: #737373; } .home .taxonomy-post_tag a { display: inline-block; padding: 0 5px; border-radius: 5px; text-decoration: none; pointer-events: none; cursor: default; font-size: 12px; text-transform: capitalize; } .home .taxonomy-post_tag a[href="https://docs.wpvip.com/tag/tech-ref/"], .home .taxonomy-post_tag a[href="https://docs.wpvip.com/tag/how-to/"] { display: none; } .home .taxonomy-post_tag a[href="https://docs.wpvip.com/tag/new/"] { background-color: #e3ffe0; color: darkgreen; border: 1px solid darkgreen; } .home .taxonomy-post_tag a[href="https://docs.wpvip.com/tag/updated/"] { background-color: lightyellow; color: #cc7722; border: 1px solid #cc7722; } .home .wp-block-post-terms__separator { display: none; } </style> </head> <body class="page-template-default page page-id-3169 page-child parent-pageid-622"> <a class="screen-reader-text-focusable" href="#site-content"> Skip to content</a> <div class="a8c-docs-layout"> <header class="a8c-docs-layout__header" role="banner"> <div class="a8c-docs-layout__header__announcement"> <p>Ready to get started with WordPress VIP? <a href="https://wpvip.com/contact/">Contact us</a></p> </div> <div class="a8c-docs-layout__header__inner"> <a class="a8c-docs-layout__header__brand" href="https://docs.wpvip.com/" aria-label="WordPress VIP Documentation" > <span class="a8c-docs-layout__header__brand__text"> Documentation </span> </a> <!-- .a8c-docs-layout__header__brand --> <div class="a8c-docs-layout__header__search"> <div class="a8c-docs-search-form-header__wrapper"> <form class="a8c-docs-search-form" action="https://docs.wpvip.com" method="get" role="search"> <label for="search" class="a8c-docs-search-form__label visually-hidden">Search</label> <input aria-label="search" class="a8c-docs-search-input a8c-docs-input" placeholder="Search the docs…" type="search" name="s" autocomplete="off" value=""> <button type="submit" class="a8c-docs-search-form__icon">Search</button> </form> </div> </div> <!-- .a8c-docs-layout__header__search --> </div> <!-- .a8c-docs-layout__header__inner --> </header> <!-- .a8c-docs-layout__header --> <div class="a8c-docs-layout__main" id="site-content"> <div class="a8c-docs-layout__main__inner"> <button aria-controls="menu-navigation-nav-mobile" aria-expanded="false" id="A8C_DOCS_MENU_BUTTON" class="a8c-docs-layout__toggle" onclick="this.setAttribute( 'aria-expanded', 'true' !== this.getAttribute( 'aria-expanded' ) )" > Menu</button> <nav aria-label="Main Menu" class="a8c-docs-layout__sidebar__mobile"> <div class="a8c-docs-search-form-sidebar__wrapper"> <form class="a8c-docs-search-form" action="https://docs.wpvip.com" method="get" role="search"> <label for="search" class="a8c-docs-search-form__label visually-hidden">Search</label> <input aria-label="search" class="a8c-docs-search-input a8c-docs-input" placeholder="Search the docs…" type="search" name="s" autocomplete="off" value=""> <button type="submit" class="a8c-docs-search-form__icon">Search</button> </form> </div> <h2 class="a8c-docs-sidebar-list__heading">Guidebooks</h2><ul class="a8c-docs-sidebar-list"><li class="page_item page-item-21160 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/get-started/">Get started</a> <button aria-expanded="false" aria-label="Submenu for Get started" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-22416"><a href="https://docs.wpvip.com/guidebooks/get-started/basics/">The basics</a></li><li class="page_item page-item-21162"><a href="https://docs.wpvip.com/guidebooks/get-started/infrastructure-overview/">Infrastructure overview</a></li><li class="page_item page-item-21164"><a href="https://docs.wpvip.com/guidebooks/get-started/user-accounts-and-access/">User accounts and access</a></li><li class="page_item page-item-21166"><a href="https://docs.wpvip.com/guidebooks/get-started/adding-plugins-and-themes/">Adding plugins and themes</a></li><li class="page_item page-item-21168"><a href="https://docs.wpvip.com/guidebooks/get-started/getting-help/">Getting help</a></li></ul></li><li class="page_item page-item-21170 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/">Develop on WordPress VIP</a> <button aria-expanded="false" aria-label="Submenu for Develop on WordPress VIP" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-21172"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/user-accounts/">User accounts and access</a></li><li class="page_item page-item-21174"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/applications-and-environments/">Applications and their environments</a></li><li class="page_item page-item-21176"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/wpvip-infrastructure/">Infrastructure</a></li><li class="page_item page-item-21178"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/wordpress-apps/">Developing for WordPress applications</a></li><li class="page_item page-item-21180"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/node-js-apps/">Developing for Node.js applications</a></li><li class="page_item page-item-21182"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/local-and-cloud/">Local and cloud development</a></li><li class="page_item page-item-21184"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/branches-and-deployments/">GitHub branches and code deployments</a></li><li class="page_item page-item-21186"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/logs-and-monitoring/">Logs and performance monitoring</a></li><li class="page_item page-item-21188"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/get-help/">Getting help</a></li></ul></li><li class="page_item page-item-21190 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/">Prepare for a site launch</a> <button aria-expanded="false" aria-label="Submenu for Prepare for a site launch" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-21192"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/accounts-and-access/">Prepare user accounts and site access</a></li><li class="page_item page-item-21194"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/the-domain/">Prepare the domain</a></li><li class="page_item page-item-21196"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/migrate-content/">Migrate site content</a></li><li class="page_item page-item-21198"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/test-your-site/">Test your site</a></li><li class="page_item page-item-21200"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/launch-your-site/">Launch your site</a></li></ul></li></ul><br /><h2 class="a8c-docs-sidebar-list__heading">All Categories</h2><ul class="a8c-docs-sidebar-list"><li class="menu-item menu-item-type-post_type menu-item-object-technical-references current-page-ancestor current-menu-ancestor current-menu-parent current-technical-references-parent menu-item-has-children menu-item-17100"><a href="https://docs.wpvip.com/access-and-routing/">Access & routing</a> <button aria-expanded="true" aria-label="Submenu for Access & routing" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references current-menu-item menu-item-17137"><a href="https://docs.wpvip.com/access-and-routing/access-controlled-files/" aria-current="page">Access-Controlled Files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16979"><a href="https://docs.wpvip.com/access-and-routing/basic-authentication/">Basic Authentication</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16990"><a href="https://docs.wpvip.com/access-and-routing/block-requests/">Block unwanted requests to a site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17008"><a href="https://docs.wpvip.com/access-and-routing/enable-hsts/">HTTP Strict-Transport-Security (HSTS)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16980"><a href="https://docs.wpvip.com/access-and-routing/ip-allow-list/">IP Allow List</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19075"><a href="https://docs.wpvip.com/access-and-routing/maintenance-mode/">Maintenance Mode plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17119"><a href="https://docs.wpvip.com/access-and-routing/partial-restriction-site-access/">Partial restriction of site access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16993"><a href="https://docs.wpvip.com/access-and-routing/robots-txt/">robots.txt</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9154"><a href="https://docs.wpvip.com/caching/">Caching</a> <button aria-expanded="false" aria-label="Submenu for Caching" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9839"><a href="https://docs.wpvip.com/caching/object-cache/">Object cache</a> <button aria-expanded="false" aria-label="Submenu for Object cache" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16433"><a href="https://docs.wpvip.com/caching/object-cache/flush-the-object-cache/">Flush the object cache</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9835"><a href="https://docs.wpvip.com/caching/page-cache/">Page cache</a> <button aria-expanded="false" aria-label="Submenu for Page cache" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9840"><a href="https://docs.wpvip.com/caching/page-cache/cache-api/">Customize page cache behavior</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-14030"><a href="https://docs.wpvip.com/caching/page-cache/query-parameter-caching/">Caching of query parameters</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9841"><a href="https://docs.wpvip.com/caching/page-cache/cookies/">Cookies</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9842"><a href="https://docs.wpvip.com/caching/page-cache/stale-responses/">Stale responses</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17332"><a href="https://docs.wpvip.com/caching/page-cache/modify-max-age/">Cache-control headers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9833"><a href="https://docs.wpvip.com/caching/page-cache/purge-urls/">Purge a URL from the page cache</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9834"><a href="https://docs.wpvip.com/caching/page-cache/the-vip-cache-personalization-api/">The VIP Cache Personalization API</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9837"><a href="https://docs.wpvip.com/caching/query-cache/">Query cache</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-16037"><a href="https://docs.wpvip.com/caching/static-asset-caching/">Static asset caching</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9838"><a href="https://docs.wpvip.com/caching/uncached-functions/">Uncached functions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9832"><a href="https://docs.wpvip.com/caching/disable-term-cache-priming/">Disable WordPress Core’s term cache priming</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17990"><a href="https://docs.wpvip.com/code-deployment/">Code deployment</a> <button aria-expanded="false" aria-label="Submenu for Code deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21409"><a href="https://docs.wpvip.com/code-deployment/custom-deployment/">Custom Deployment</a> <button aria-expanded="false" aria-label="Submenu for Custom Deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22113"><a href="https://docs.wpvip.com/code-deployment/custom-deployment/continuous-deployment/">Custom Deployment with continuous deployment</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21410"><a href="https://docs.wpvip.com/code-deployment/default-deployment/">Default Deployment</a> <button aria-expanded="false" aria-label="Submenu for Default Deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18736"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/">Build and deploy</a> <button aria-expanded="false" aria-label="Submenu for Build and deploy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17080"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/ci-cd/">Continuous integration and deployment (CI/CD)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16931"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/configure-builds-on-circleci/">Configure builds on CircleCI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18738"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/built-files-without-ci/">Deploying built files without a CI service</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17991"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/">Deploying branches</a> <button aria-expanded="false" aria-label="Submenu for Deploying branches" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16959"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/update/">Update an environment’s deploying branch</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17073"><a href="https://docs.wpvip.com/code-deployment/github-repository/">GitHub repository</a> <button aria-expanded="false" aria-label="Submenu for GitHub repository" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16928"><a href="https://docs.wpvip.com/code-deployment/github-repository/required-status-checks/">Enable required status checks for pull requests</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16929"><a href="https://docs.wpvip.com/code-deployment/github-repository/composer/">Using Composer on VIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17079"><a href="https://docs.wpvip.com/code-deployment/default-deployment/developing-from-another-repository/">Develop code in a non-wpcomvip repository</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21403"><a href="https://docs.wpvip.com/code-deployment/cache-clearing/">Code deployment and cache clearing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17087"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/deployments-panel/">Deployments log in the VIP Dashboard</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18716"><a href="https://docs.wpvip.com/code-deployment/duration-of-time/">Duration of time for a deployment to complete</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17998"><a href="https://docs.wpvip.com/code-deployment/rollbacks/">Rollbacks in the VIP Dashboard</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17061"><a href="https://docs.wpvip.com/codebase-manager/">Codebase Manager</a> <button aria-expanded="false" aria-label="Submenu for Codebase Manager" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17069"><a href="https://docs.wpvip.com/codebase-manager/plugins-panel/">VIP Dashboard Plugins panel</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17072"><a href="https://docs.wpvip.com/codebase-manager/vulnerability-and-update-scan/">Vulnerability and Update Scan by the VIP Code Analysis Bot</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17063"><a href="https://docs.wpvip.com/databases/">Databases</a> <button aria-expanded="false" aria-label="Submenu for Databases" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22203"><a href="https://docs.wpvip.com/databases/access/">Database access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17059"><a href="https://docs.wpvip.com/databases/backups/">Database Backups</a> <button aria-expanded="false" aria-label="Submenu for Database Backups" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17518"><a href="https://docs.wpvip.com/databases/backups/limitations/">Limitations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17532"><a href="https://docs.wpvip.com/databases/backups/access/">Access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17538"><a href="https://docs.wpvip.com/databases/backups/download-a-full-database-backup/">Download a full database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17546"><a href="https://docs.wpvip.com/databases/backups/download-a-partial-database-backup/">Download a partial database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17551"><a href="https://docs.wpvip.com/databases/backups/download-a-database-backup-for-a-network-site/">Download a database backup for a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17556"><a href="https://docs.wpvip.com/databases/backups/generate-a-fresh-database-backup/">Generate a new database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17562"><a href="https://docs.wpvip.com/databases/backups/database-backup-link/">Copy a link to a prepared database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16935"><a href="https://docs.wpvip.com/databases/backups/database-backup-shipping/">Database Backup Shipping</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17060"><a href="https://docs.wpvip.com/databases/data-sync/">Data sync from production to non-production environments</a> <button aria-expanded="false" aria-label="Submenu for Data sync from production to non-production environments" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17058"><a href="https://docs.wpvip.com/databases/data-sync/config-file/">Data sync config file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20781"><a href="https://docs.wpvip.com/databases/data-sync/cleanup-operations/">Cleanup operations for data syncing</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16923"><a href="https://docs.wpvip.com/databases/import/">Import database files</a> <button aria-expanded="false" aria-label="Submenu for Import database files" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17580"><a href="https://docs.wpvip.com/databases/import/import-with-vip-cli/">Import database files with VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16925"><a href="https://docs.wpvip.com/databases/import/validate-sql-file/">Validate a SQL database file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17591"><a href="https://docs.wpvip.com/databases/import/check-the-status/">Check the status of an import</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17579"><a href="https://docs.wpvip.com/databases/import/updating-values/">Update domain name values</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17587"><a href="https://docs.wpvip.com/databases/import/multisite-database-imports/">Database imports for multisite environments</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17600"><a href="https://docs.wpvip.com/databases/import/export-a-file-for-migration/">Export a SQL file from a site not hosted at WordPress VIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17030"><a href="https://docs.wpvip.com/databases/optimize-queries/">Optimize database queries</a> <button aria-expanded="false" aria-label="Submenu for Optimize database queries" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17042"><a href="https://docs.wpvip.com/databases/optimize-queries/using-post__not_in/">Avoid post__not_in</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17046"><a href="https://docs.wpvip.com/databases/optimize-queries/database-queries/">Best practices for database queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18513"><a href="https://docs.wpvip.com/databases/optimize-queries/defining-post_status-or-post_type/">Defining post_status or post_type</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17043"><a href="https://docs.wpvip.com/databases/optimize-queries/encode-values-passed-to-add_query_arg/">Encode values passed to `add_query_arg`</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16914"><a href="https://docs.wpvip.com/databases/optimize-queries/filtering-wp_unique_post_slug/">Fix performance issues by filtering wp_unique_post_slug</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22314"><a href="https://docs.wpvip.com/databases/optimize-queries/identify-slow-queries/">Identify slow queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17045"><a href="https://docs.wpvip.com/databases/optimize-queries/querying-on-meta_value/">Meta queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16915"><a href="https://docs.wpvip.com/databases/optimize-queries/optimize-core-queries-at-scale/">Optimize core queries at scale</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17047"><a href="https://docs.wpvip.com/databases/optimize-queries/retrieving-remote-data/">Retrieving remote data</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17044"><a href="https://docs.wpvip.com/databases/optimize-queries/term-queries-should-consider-include_children-false/">Taxonomy queries should set `include_children` to false</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17066"><a href="https://docs.wpvip.com/databases/supported-collations-charsets/">Supported character sets and collations</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17032"><a href="https://docs.wpvip.com/development-workflow/">Developing on WordPress VIP</a> <button aria-expanded="false" aria-label="Submenu for Developing on WordPress VIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17057"><a href="https://docs.wpvip.com/development-workflow/github-pr-reviews/">GitHub pull request flow</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17031"><a href="https://docs.wpvip.com/development-workflow/code-review/">Code review</a> <button aria-expanded="false" aria-label="Submenu for Code review" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17049"><a href="https://docs.wpvip.com/development-workflow/code-review/review-recommendations/">Reduce review times</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17048"><a href="https://docs.wpvip.com/development-workflow/code-review/reduce-pull-request-size/">Reduce the size of a pull request</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16919"><a href="https://docs.wpvip.com/development-workflow/create-good-changesets/">Create good changesets</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16920"><a href="https://docs.wpvip.com/development-workflow/write-a-good-commit-message/">Elements of a good commit message</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17007"><a href="https://docs.wpvip.com/development-workflow/contribute-to-wordpress/">Contribute to WordPress Core</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17075"><a href="https://docs.wpvip.com/domains/">Domains</a> <button aria-expanded="false" aria-label="Submenu for Domains" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16934"><a href="https://docs.wpvip.com/domains/map-a-domain/">Add a domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16933"><a href="https://docs.wpvip.com/domains/check-dns-record-time-to-live/">Check DNS record time to live (TTL)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17085"><a href="https://docs.wpvip.com/domains/convenience-domains/">Convenience domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21763"><a href="https://docs.wpvip.com/domains/default-behavior/">Default behavior of domains</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-22793"><a href="https://docs.wpvip.com/domains/dns-records-for-email/">DNS records to send email from a custom domain</a> <button aria-expanded="false" aria-label="Submenu for DNS records to send email from a custom domain" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22792"><a href="https://docs.wpvip.com/domains/dns-records-for-email/check-status/">Check the status of DNS records for email</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17082"><a href="https://docs.wpvip.com/domains/fqdn/">Fully qualified domain names (FQDN)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17084"><a href="https://docs.wpvip.com/domains/managing-your-hosts-file/">Modify a hosts file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16932"><a href="https://docs.wpvip.com/domains/point-dns-to-vip/">Point DNS for a domain to WPVIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16960"><a href="https://docs.wpvip.com/domains/primary-domain/">Primary domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19974"><a href="https://docs.wpvip.com/domains/verification/">Verify a domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17105"><a href="https://docs.wpvip.com/domains/multiple-domains/">Configure multiple domains to resolve to the same network site</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17093"><a href="https://docs.wpvip.com/enterprise-search/">Enterprise Search</a> <button aria-expanded="false" aria-label="Submenu for Enterprise Search" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21944"><a href="https://docs.wpvip.com/enterprise-search/es-limitations/">Limitations of Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16953"><a href="https://docs.wpvip.com/enterprise-search/enable/">Enable Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16948"><a href="https://docs.wpvip.com/enterprise-search/index/">Index with Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16942"><a href="https://docs.wpvip.com/enterprise-search/version/">Version with Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16945"><a href="https://docs.wpvip.com/enterprise-search/multisite/">Enterprise Search on multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16940"><a href="https://docs.wpvip.com/enterprise-search/check-index-health/">Check the index health</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16939"><a href="https://docs.wpvip.com/enterprise-search/indexing/">Choose what to index</a> <button aria-expanded="false" aria-label="Submenu for Choose what to index" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16952"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-types/">Indexing post types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16938"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-statuses/">Indexing post statuses</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16951"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-taxonomies/">Indexing post taxonomies</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16950"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-meta/">Indexing post meta</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16963"><a href="https://docs.wpvip.com/enterprise-search/indexing/user-meta/">Indexing user meta</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16949"><a href="https://docs.wpvip.com/enterprise-search/enable-features/">Enable Enterprise Search features</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16946"><a href="https://docs.wpvip.com/enterprise-search/enable-non-search-queries/">Offload any WP_Query to Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16937"><a href="https://docs.wpvip.com/enterprise-search/enable-for-wp-admin/">Enable Enterprise Search for the WordPress Admin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16941"><a href="https://docs.wpvip.com/enterprise-search/search-tokenization/">Search tokenization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16947"><a href="https://docs.wpvip.com/enterprise-search/rate-limiting/">Rate limiting in Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16944"><a href="https://docs.wpvip.com/enterprise-search/customize-search-results/">Customize search results</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16943"><a href="https://docs.wpvip.com/enterprise-search/dev-tools/">Debug with Enterprise Search Dev Tools</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17077"><a href="https://docs.wpvip.com/infrastructure/">Infrastructure</a> <button aria-expanded="false" aria-label="Submenu for Infrastructure" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17090"><a href="https://docs.wpvip.com/infrastructure/environments/">Environments</a> <button aria-expanded="false" aria-label="Submenu for Environments" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17094"><a href="https://docs.wpvip.com/infrastructure/environments/software-management/">Software Versions management</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16958"><a href="https://docs.wpvip.com/infrastructure/environments/manage-environment-variables/">Manage environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16927"><a href="https://docs.wpvip.com/infrastructure/environments/environment-specific-code/">Write environment-specific code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18130"><a href="https://docs.wpvip.com/infrastructure/environments/indicator-labels/">Environment indicator labels</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16974"><a href="https://docs.wpvip.com/infrastructure/origin-servers/">Origin servers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17078"><a href="https://docs.wpvip.com/infrastructure/edge-cache/">Edge cache servers</a> <button aria-expanded="false" aria-label="Submenu for Edge cache servers" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20867"><a href="https://docs.wpvip.com/infrastructure/edge-cache/file-compression/">Edge cache file compression</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20866"><a href="https://docs.wpvip.com/infrastructure/edge-cache/global-locations/">Global locations of edge cache servers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23052"><a href="https://docs.wpvip.com/infrastructure/edge-cache/target-a-location/">Target a specific edge server location</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17095"><a href="https://docs.wpvip.com/infrastructure/ip-geolocation/">IP geolocation</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17091"><a href="https://docs.wpvip.com/infrastructure/ip-ranges/">IP ranges</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16956"><a href="https://docs.wpvip.com/infrastructure/http-headers/">HTTP response headers</a> <button aria-expanded="false" aria-label="Submenu for HTTP response headers" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23059"><a href="https://docs.wpvip.com/infrastructure/http-headers/add-edit-or-remove/">Add, edit, or remove HTTP response headers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23054"><a href="https://docs.wpvip.com/infrastructure/http-headers/added-by-wpvip/">HTTP response headers added by WPVIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17096"><a href="https://docs.wpvip.com/infrastructure/vip-user-agents/">VIP User-Agents</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16957"><a href="https://docs.wpvip.com/infrastructure/retire-a-site/">Retire a site from VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17092"><a href="https://docs.wpvip.com/infrastructure/disaster-recovery/">Disaster recovery</a> <button aria-expanded="false" aria-label="Submenu for Disaster recovery" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22339"><a href="https://docs.wpvip.com/infrastructure/disaster-recovery/geographical-redundancy/">Geographical Redundancy for disaster recovery</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16926"><a href="https://docs.wpvip.com/launch-a-site/">Launch a site</a> <button aria-expanded="false" aria-label="Submenu for Launch a site" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16954"><a href="https://docs.wpvip.com/launch-a-site/begin-a-single-site-launch/">Begin a single site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16969"><a href="https://docs.wpvip.com/launch-a-site/begin-a-multisite-launch/">Begin a network site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16989"><a href="https://docs.wpvip.com/launch-a-site/node-js-launch/">Begin a Node.js site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16968"><a href="https://docs.wpvip.com/launch-a-site/complete-a-site-launch/">Complete a site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16967"><a href="https://docs.wpvip.com/launch-a-site/launch-troubleshooting/">Troubleshoot a WordPress site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16970"><a href="https://docs.wpvip.com/launch-a-site/testing-your-site/">Test a WordPress site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20239"><a href="https://docs.wpvip.com/launch-a-site/launched/">Launched</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20240"><a href="https://docs.wpvip.com/launch-a-site/unlaunched/">Unlaunched</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17103"><a href="https://docs.wpvip.com/launch-a-site/order-of-launch/">Order of launching sites on a multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16966"><a href="https://docs.wpvip.com/launch-a-site/manual-launch/">Manually launch a site on a multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18214"><a href="https://docs.wpvip.com/launch-a-site/redesign/">Launches for site redesigns</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16964"><a href="https://docs.wpvip.com/local-development/">Local and cloud development</a> <button aria-expanded="false" aria-label="Submenu for Local and cloud development" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16971"><a href="https://docs.wpvip.com/local-development/add-site-content/">Add VIP production site content for local development</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-19611"><a href="https://docs.wpvip.com/local-development/github-codespaces/">Developing with GitHub Codespaces</a> <button aria-expanded="false" aria-label="Submenu for Developing with GitHub Codespaces" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20541"><a href="https://docs.wpvip.com/local-development/github-codespaces/access-logs/">Access logs for GitHub Codespaces</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20510"><a href="https://docs.wpvip.com/local-development/github-codespaces/customize-config-file/">Customize the Codespaces configuration file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20504"><a href="https://docs.wpvip.com/local-development/github-codespaces/import-database/">Import a SQL database file to Codespaces</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20545"><a href="https://docs.wpvip.com/local-development/github-codespaces/codespaces-database-sync/">Sync a platform database to Codespaces</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16972"><a href="https://docs.wpvip.com/local-development/set-up-vvv/">Set up VVV for VIP development</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16988"><a href="https://docs.wpvip.com/local-development/third-party-app/">Set up a third-party local development app</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17883"><a href="https://docs.wpvip.com/logs/">Logs</a> <button aria-expanded="false" aria-label="Submenu for Logs" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17161"><a href="https://docs.wpvip.com/logs/audit-log/">Audit Log</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17088"><a href="https://docs.wpvip.com/logs/log-shipping/">HTTP request Log Shipping</a> <button aria-expanded="false" aria-label="Submenu for HTTP request Log Shipping" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20297"><a href="https://docs.wpvip.com/logs/log-shipping/aws-s3-bucket-requirements/">AWS S3 bucket requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16975"><a href="https://docs.wpvip.com/logs/log-shipping/enable/">Enable HTTP request Log Shipping</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19809"><a href="https://docs.wpvip.com/logs/log-shipping/log-contents/">Contents of HTTP request logs</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16955"><a href="https://docs.wpvip.com/logs/log-shipping/analyze-with-goaccess/">Analyze HTTP request logs with GoAccess</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17187"><a href="https://docs.wpvip.com/logs/runtime-logs/">Runtime Logs </a> <button aria-expanded="false" aria-label="Submenu for Runtime Logs " class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17158"><a href="https://docs.wpvip.com/logs/runtime-logs/dashboard/">Runtime Logs in the VIP Dashboard</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17001"><a href="https://docs.wpvip.com/logs/runtime-logs/cli/">Retrieve Runtime Logs with VIP-CLI</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17083"><a href="https://docs.wpvip.com/logs/slow-query/">Slow Query Logs</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17195"><a href="https://docs.wpvip.com/logs/wp-cli-commands/">WP-CLI Commands log</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16983"><a href="https://docs.wpvip.com/manage-user-access/">Manage user access</a> <button aria-expanded="false" aria-label="Submenu for Manage user access" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17123"><a href="https://docs.wpvip.com/manage-user-access/github/">GitHub user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17147"><a href="https://docs.wpvip.com/manage-user-access/new-relic/">New Relic user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17146"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/">VIP Dashboard access</a> <button aria-expanded="false" aria-label="Submenu for VIP Dashboard access" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17102"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/org-roles/">Org roles and permissions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17128"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/app-role/">App role and permissions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16985"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/invite-new-users/">Invite new users</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16986"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/edit-user-roles/">Edit user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18569"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/copy-user-roles/">Copy user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16987"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/remove-user/">Remove a user</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18499"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/">Single Sign-On</a> <button aria-expanded="false" aria-label="Submenu for Single Sign-On" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18498"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/configurations/">Configurations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18497"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/enforce-sso/">Enforce SSO</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17125"><a href="https://docs.wpvip.com/manage-user-access/wordpress/">WordPress user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17124"><a href="https://docs.wpvip.com/manage-user-access/zendesk/">Zendesk user access</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17098"><a href="https://docs.wpvip.com/node-js/">Node.js on WPVIP</a> <button aria-expanded="false" aria-label="Submenu for Node.js on WPVIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17145"><a href="https://docs.wpvip.com/node-js/application-requirements/">Node.js application requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17122"><a href="https://docs.wpvip.com/node-js/health-checks/">Health checks</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16981"><a href="https://docs.wpvip.com/node-js/manage-dependencies/">Manage dependencies in Node.js</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17120"><a href="https://docs.wpvip.com/node-js/building-applications/">Building Node.js applications</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16984"><a href="https://docs.wpvip.com/node-js/debug/">Debug a Node.js application</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17127"><a href="https://docs.wpvip.com/node-js/deployment-validation/">Deployment validation for Node.js applications</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17108"><a href="https://docs.wpvip.com/node-js/integrating-redis/">Integrating Redis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17109"><a href="https://docs.wpvip.com/node-js/managing-node-js-versions/">Managing Node.js versions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17107"><a href="https://docs.wpvip.com/node-js/environment-variables/">Node.js environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16977"><a href="https://docs.wpvip.com/node-js/serve-static-content/">Serve static content</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17121"><a href="https://docs.wpvip.com/node-js/websockets/">WebSockets</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17289"><a href="https://docs.wpvip.com/notifications/">Notifications</a> <button aria-expanded="false" aria-label="Submenu for Notifications" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17293"><a href="https://docs.wpvip.com/notifications/destinations/">Destinations</a> <button aria-expanded="false" aria-label="Submenu for Destinations" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17290"><a href="https://docs.wpvip.com/notifications/destinations/webhook-urls/">General-purpose webhook URLs</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21636"><a href="https://docs.wpvip.com/notifications/important-alerts/">Important Alerts</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22277"><a href="https://docs.wpvip.com/notifications/event-types/">Notification event types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17292"><a href="https://docs.wpvip.com/notifications/organization-notifications/">Notifications for an organization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17291"><a href="https://docs.wpvip.com/notifications/application-notifications/">Notifications for an application</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17111"><a href="https://docs.wpvip.com/parse-ly/">Parse.ly</a> <button aria-expanded="false" aria-label="Submenu for Parse.ly" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20451"><a href="https://docs.wpvip.com/parse-ly/wp-parsely/">wp-parsely plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16992"><a href="https://docs.wpvip.com/parse-ly/enabling-and-disabling/">Enabling and disabling wp-parsely</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-20450"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/">wp-parsely features</a> <button aria-expanded="false" aria-label="Submenu for wp-parsely features" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20449"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/content-helper/">Content Helper</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20448"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/title-suggestions/">Title Suggestions (Beta)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20447"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/excerpt-suggestions/">Excerpt Suggestions (Beta)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20446"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/smart-linking/">Smart Linking (Beta)</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17144"><a href="https://docs.wpvip.com/parse-ly/configuration/">Configuration</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17143"><a href="https://docs.wpvip.com/parse-ly/consent-management/">Consent management and Parse.ly</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17884"><a href="https://docs.wpvip.com/performance/">Performance</a> <button aria-expanded="false" aria-label="Submenu for Performance" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16916"><a href="https://docs.wpvip.com/performance/analyze-server-performance/">Analyze a site’s server performance</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19262"><a href="https://docs.wpvip.com/performance/analyze-requests-and-application-code/">Analyze requests and application code for performance</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18819"><a href="https://docs.wpvip.com/performance/insights-metrics/">Insights & Metrics</a> <button aria-expanded="false" aria-label="Submenu for Insights & Metrics" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20685"><a href="https://docs.wpvip.com/performance/insights-metrics/http-metrics/">HTTP metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20686"><a href="https://docs.wpvip.com/performance/insights-metrics/resource-metrics/">Resource Usage metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20687"><a href="https://docs.wpvip.com/performance/insights-metrics/database-metrics/">Database metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20688"><a href="https://docs.wpvip.com/performance/insights-metrics/cache-metrics/">Cache metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22278"><a href="https://docs.wpvip.com/performance/insights-metrics/anomalies/">Performance metrics anomalies</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18260"><a href="https://docs.wpvip.com/performance/load-testing/">Load testing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17055"><a href="https://docs.wpvip.com/performance/new-relic/">New Relic</a> <button aria-expanded="false" aria-label="Submenu for New Relic" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17065"><a href="https://docs.wpvip.com/performance/new-relic/for-node-js/">New Relic for Node.js</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17064"><a href="https://docs.wpvip.com/performance/new-relic/for-wordpress/">New Relic for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16922"><a href="https://docs.wpvip.com/performance/new-relic/manually-log-errors/">Manually log errors in New Relic</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17068"><a href="https://docs.wpvip.com/performance/query-monitor/">Query Monitor</a> <button aria-expanded="false" aria-label="Submenu for Query Monitor" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16921"><a href="https://docs.wpvip.com/performance/query-monitor/enable/">Enable Query Monitor</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19263"><a href="https://docs.wpvip.com/performance/identify-performance-issues/">Resources for identifying performance issues</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16965"><a href="https://docs.wpvip.com/php_codesniffer/">PHPCS</a> <button aria-expanded="false" aria-label="Submenu for PHPCS" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17629"><a href="https://docs.wpvip.com/php_codesniffer/install-globally/">Install PHPCS globally</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17628"><a href="https://docs.wpvip.com/php_codesniffer/install-at-project-level/">Install PHPCS at the project level</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17630"><a href="https://docs.wpvip.com/php_codesniffer/run-against-code/">Run PHPCS against code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17101"><a href="https://docs.wpvip.com/php_codesniffer/phpcs-report/">Interpreting a PHPCS report</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17053"><a href="https://docs.wpvip.com/php_codesniffer/errors/">PHPCS errors</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17052"><a href="https://docs.wpvip.com/php_codesniffer/warnings/">PHPCS warnings</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-18961"><a href="https://docs.wpvip.com/plugins/">Plugins</a> <button aria-expanded="false" aria-label="Submenu for Plugins" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9962"><a href="https://docs.wpvip.com/plugins/installing-plugins/">Add a plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9951"><a href="https://docs.wpvip.com/plugins/activate-plugins-through-code/">Activate a plugin through code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9960"><a href="https://docs.wpvip.com/plugins/version-updates-and-maintenance/">Version updates for third-party plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9958"><a href="https://docs.wpvip.com/plugins/third-party-plugins/">Evaluate third-party plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9949"><a href="https://docs.wpvip.com/plugins/incompatibilities/">Plugin incompatibilities</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9961"><a href="https://docs.wpvip.com/plugins/load-order/">Load order of plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-14891"><a href="https://docs.wpvip.com/plugins/automattic-plugins/">Automattic plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9959"><a href="https://docs.wpvip.com/plugins/technology-partner-plugins/">Technology Partner plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17512"><a href="https://docs.wpvip.com/plugins/helper-file/">Plugin helper file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17177"><a href="https://docs.wpvip.com/plugins/woocommerce/">WooCommerce</a> <button aria-expanded="false" aria-label="Submenu for WooCommerce" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17024"><a href="https://docs.wpvip.com/plugins/woocommerce/upgrade-woocommerce/">Upgrade WooCommerce on VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17206"><a href="https://docs.wpvip.com/plugins/woocommerce/caching-for-woocommerce/">Caching for WooCommerce</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17205"><a href="https://docs.wpvip.com/plugins/woocommerce/customizing-woocommerce/">Customizing WooCommerce</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17025"><a href="https://docs.wpvip.com/plugins/woocommerce/woocommerce-debug-logging/">Enable WooCommerce Debug Logging</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17026"><a href="https://docs.wpvip.com/plugins/woocommerce/troubleshoot-woocommerce/">Troubleshoot WooCommerce</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17099"><a href="https://docs.wpvip.com/redirects/">Redirects</a> <button aria-expanded="false" aria-label="Submenu for Redirects" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21937"><a href="https://docs.wpvip.com/redirects/limitations-for-files/">Limitations on redirects for files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17117"><a href="https://docs.wpvip.com/redirects/domain-redirects-in-vip-config-php/">Redirects in vip-config.php</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17118"><a href="https://docs.wpvip.com/redirects/redirects-in-theme-code/">Writing redirects directly into a site’s theme code</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17138"><a href="https://docs.wpvip.com/reverse-proxy/">Reverse proxy</a> <button aria-expanded="false" aria-label="Submenu for Reverse proxy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16991"><a href="https://docs.wpvip.com/reverse-proxy/configure/">Configure a reverse proxy</a> <button aria-expanded="false" aria-label="Submenu for Configure a reverse proxy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19122"><a href="https://docs.wpvip.com/reverse-proxy/configure/request-header-verification/">Log True-Client-IP and add a proxy verification method</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19121"><a href="https://docs.wpvip.com/reverse-proxy/configure/ip-allow-list-verification/">Log True-Client-IP with an IP allow list</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17004"><a href="https://docs.wpvip.com/reverse-proxy/test/">Test a proxy configuration</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17005"><a href="https://docs.wpvip.com/reverse-proxy/domains-and-tls/">Configure domains and TLS for a reverse proxy</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17131"><a href="https://docs.wpvip.com/security/">Security</a> <button aria-expanded="false" aria-label="Submenu for Security" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17173"><a href="https://docs.wpvip.com/security/for-wordpress/">WordPress security on VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17149"><a href="https://docs.wpvip.com/security/user-recommendations/">Security recommendations for all users</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17140"><a href="https://docs.wpvip.com/security/wordpress-sso/">Single Sign-On (SSO) for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17139"><a href="https://docs.wpvip.com/security/two-factor-authentication/">Two-factor authentication for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17871"><a href="https://docs.wpvip.com/security/penetration-testing/">Penetration testing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22572"><a href="https://docs.wpvip.com/security/phishing/">Phishing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17150"><a href="https://docs.wpvip.com/security/javascript-security-recommendations/">JavaScript security recommendations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17148"><a href="https://docs.wpvip.com/security/validating-sanitizing-and-escaping/">Validating, sanitizing, and escaping</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17136"><a href="https://docs.wpvip.com/tls/">TLS</a> <button aria-expanded="false" aria-label="Submenu for TLS" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16994"><a href="https://docs.wpvip.com/tls/lets-encrypt/">Install a Let’s Encrypt TLS certificate</a> <button aria-expanded="false" aria-label="Submenu for Install a Let’s Encrypt TLS certificate" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18632"><a href="https://docs.wpvip.com/tls/lets-encrypt/re-install/">Re-install a Let’s Encrypt certificate</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18627"><a href="https://docs.wpvip.com/tls/lets-encrypt/switch-to-custom-certificate/">Switch from a Let’s Encrypt certificate to a custom TLS certificate</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16995"><a href="https://docs.wpvip.com/tls/custom-cert/">Install a custom TLS certificate</a> <button aria-expanded="false" aria-label="Submenu for Install a custom TLS certificate" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18057"><a href="https://docs.wpvip.com/tls/custom-cert/requirements/">Requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18056"><a href="https://docs.wpvip.com/tls/custom-cert/custom-tls-vip-csr/">Custom TLS certificates with a VIP CSR</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18055"><a href="https://docs.wpvip.com/tls/custom-cert/custom-tls-non-vip-csr/">Custom TLS certificates with a non-VIP CSR</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18643"><a href="https://docs.wpvip.com/tls/custom-cert/renew/">Renew a custom TLS certificate</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18054"><a href="https://docs.wpvip.com/tls/custom-cert/switch-to-lets-encrypt/">Switch from a custom TLS certificate to a Let’s Encrypt certificate</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17132"><a href="https://docs.wpvip.com/vip-code-analysis-bot/">VIP Code Analysis Bot</a> <button aria-expanded="false" aria-label="Submenu for VIP Code Analysis Bot" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17155"><a href="https://docs.wpvip.com/vip-code-analysis-bot/default-behavior/">Default behavior of the Bot</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17153"><a href="https://docs.wpvip.com/vip-code-analysis-bot/feedback/">Bot feedback and messages</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17151"><a href="https://docs.wpvip.com/vip-code-analysis-bot/auto-approvals/">Auto approvals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17157"><a href="https://docs.wpvip.com/vip-code-analysis-bot/phpcs-analysis/">PHPCS analysis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16997"><a href="https://docs.wpvip.com/vip-code-analysis-bot/customize-phpcs/">Customize PHPCS scanning</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17156"><a href="https://docs.wpvip.com/vip-code-analysis-bot/svg-analysis/">SVG analysis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17154"><a href="https://docs.wpvip.com/vip-code-analysis-bot/php-linting/">PHP linting</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17152"><a href="https://docs.wpvip.com/vip-code-analysis-bot/build-status/">GitHub build status</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16996"><a href="https://docs.wpvip.com/vip-code-analysis-bot/customize-the-bot/">Customize the VIP Code Analysis Bot</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17133"><a href="https://docs.wpvip.com/vip-dashboard/">VIP Dashboard</a> <button aria-expanded="false" aria-label="Submenu for VIP Dashboard" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17159"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/">Log in to the VIP Dashboard</a> <button aria-expanded="false" aria-label="Submenu for Log in to the VIP Dashboard" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19013"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/github-auth/">Sign in with GitHub</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19012"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/sso-auth/">Sign in with SSO</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19014"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/wordpress-com-auth/">Sign in with WordPress.com</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22514"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/vip-auth/">VIP Authentication</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18496"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/troubleshooting/">Login failure errors</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17303"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/">Organization view</a> <button aria-expanded="false" aria-label="Submenu for Organization view" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20261"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/organization/">Organization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17162"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/usage/">Usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17188"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/people/">People</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17304"><a href="https://docs.wpvip.com/vip-dashboard/application-view/">Application view</a> <button aria-expanded="false" aria-label="Submenu for Application view" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16976"><a href="https://docs.wpvip.com/vip-dashboard/application-view/application/">Application</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17160"><a href="https://docs.wpvip.com/vip-dashboard/overview/">Overview</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17186"><a href="https://docs.wpvip.com/vip-dashboard/user-settings/">Settings</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17185"><a href="https://docs.wpvip.com/vip-dashboard/my-organizations/">My Organizations</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17134"><a href="https://docs.wpvip.com/vip-file-system/">VIP File System</a> <button aria-expanded="false" aria-label="Submenu for VIP File System" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17002"><a href="https://docs.wpvip.com/vip-file-system/import-media-files/">Import media files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17006"><a href="https://docs.wpvip.com/vip-file-system/media-backups/">Media Backups</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17164"><a href="https://docs.wpvip.com/vip-file-system/supported-file-types/">Supported file types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17169"><a href="https://docs.wpvip.com/vip-file-system/image-files/">Image file behavior</a> <button aria-expanded="false" aria-label="Submenu for Image file behavior" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19825"><a href="https://docs.wpvip.com/vip-file-system/image-files/image-quality/">Image quality and next-gen formats</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17165"><a href="https://docs.wpvip.com/vip-file-system/image-files/transformations/">Image transformation</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17168"><a href="https://docs.wpvip.com/vip-file-system/image-files/intermediate-images/">Intermediate images</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17167"><a href="https://docs.wpvip.com/vip-file-system/image-files/responsive-images/">Responsive images</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16998"><a href="https://docs.wpvip.com/vip-file-system/image-files/strip-image-metadata/">Strip image metadata on upload</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17945"><a href="https://docs.wpvip.com/vip-file-system/modify-uploads-directory/">Modify the /uploads path structure</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17932"><a href="https://docs.wpvip.com/vip-file-system/versioning-files/">Overwriting and versioning files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17166"><a href="https://docs.wpvip.com/vip-file-system/shared-media-files/">Shared media files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17171"><a href="https://docs.wpvip.com/vip-file-system/media-uploads/">Working with uploaded files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17170"><a href="https://docs.wpvip.com/vip-file-system/local-file-operations/">Working with the /tmp directory</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17135"><a href="https://docs.wpvip.com/vip-local-development-environment/">VIP Local Development Environment</a> <button aria-expanded="false" aria-label="Submenu for VIP Local Development Environment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21131"><a href="https://docs.wpvip.com/vip-local-development-environment/limitations/">Limitations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21130"><a href="https://docs.wpvip.com/vip-local-development-environment/requirements/">Requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21049"><a href="https://docs.wpvip.com/vip-local-development-environment/stack-services/">Stack services</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17172"><a href="https://docs.wpvip.com/vip-local-development-environment/basic-usage/">Basic usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17011"><a href="https://docs.wpvip.com/vip-local-development-environment/dev-env-advanced-usage/">Advanced usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17000"><a href="https://docs.wpvip.com/vip-local-development-environment/create/">Create a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17009"><a href="https://docs.wpvip.com/vip-local-development-environment/load-application-code/">Update a local environment to load application code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17003"><a href="https://docs.wpvip.com/vip-local-development-environment/add-database-content/">Sync or import database content to a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17010"><a href="https://docs.wpvip.com/vip-local-development-environment/add-media-content/">Add media to a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17387"><a href="https://docs.wpvip.com/vip-local-development-environment/enable-https/">Enable HTTPS</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20517"><a href="https://docs.wpvip.com/vip-local-development-environment/environment-variables/">Manage environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16999"><a href="https://docs.wpvip.com/vip-local-development-environment/use-enterprise-search/">Use Enterprise Search on a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17196"><a href="https://docs.wpvip.com/vip-local-development-environment/networking/">Networking</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17207"><a href="https://docs.wpvip.com/vip-local-development-environment/troubleshooting-dev-env/">Troubleshooting</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17191"><a href="https://docs.wpvip.com/vip-go-mu-plugins/">VIP MU plugins</a> <button aria-expanded="false" aria-label="Submenu for VIP MU plugins" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17215"><a href="https://docs.wpvip.com/vip-go-mu-plugins/branches-and-updates/">VIP MU plugins branches and updates</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17216"><a href="https://docs.wpvip.com/vip-go-mu-plugins/block-data-api-plugin/">Block Data API plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17198"><a href="https://docs.wpvip.com/vip-go-mu-plugins/file-concatenation-and-minification/">File concatenation and minification</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18154"><a href="https://docs.wpvip.com/vip-go-mu-plugins/block-governance-plugin/">WordPress VIP Block Governance plugin</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17175"><a href="https://docs.wpvip.com/vip-support/">WPVIP Support</a> <button aria-expanded="false" aria-label="Submenu for WPVIP Support" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22361"><a href="https://docs.wpvip.com/vip-support/information-in-a-ticket/">Information to include in a Support ticket</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17209"><a href="https://docs.wpvip.com/vip-support/site-access/">Site access for WPVIP Support</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17179"><a href="https://docs.wpvip.com/vip-support/vip-product-feedback/">Product feedback</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17017"><a href="https://docs.wpvip.com/vip-support/add-powered-by-wordpress-vip-to-your-site/">Add “Powered by WordPress VIP” to a site</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17176"><a href="https://docs.wpvip.com/vip-cli/">VIP-CLI</a> <button aria-expanded="false" aria-label="Submenu for VIP-CLI" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17204"><a href="https://docs.wpvip.com/vip-cli/installing-vip-cli/">Install VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19696"><a href="https://docs.wpvip.com/vip-cli/commands/">Command reference</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17018"><a href="https://docs.wpvip.com/vip-cli/target-environments/">Target environments with VIP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17202"><a href="https://docs.wpvip.com/vip-cli/advanced-usage/">Advanced usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17203"><a href="https://docs.wpvip.com/vip-cli/troubleshooting/">Troubleshooting VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17214"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/">WP-CLI with VIP-CLI</a> <button aria-expanded="false" aria-label="Submenu for WP-CLI with VIP-CLI" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17201"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/disallowed-commands/">Disallowed WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17022"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/search-replace/">Use WP-CLI search-replace</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17019"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/save-command-output/">Save command output to a file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17023"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/write-custom-wp-cli-commands/">Write custom WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17020"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/wp-cli-commands-on-vip/">Best practices for writing WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17021"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/cli-commands-at-scale/">Write custom WP-CLI commands at scale</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17208"><a href="https://docs.wpvip.com/wordpress-on-vip/">WordPress on WPVIP</a> <button aria-expanded="false" aria-label="Submenu for WordPress on WPVIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17213"><a href="https://docs.wpvip.com/wordpress-on-vip/action-scheduler/">Action Scheduler</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17071"><a href="https://docs.wpvip.com/wordpress-on-vip/autoloaded-options/">Autoloaded options</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17180"><a href="https://docs.wpvip.com/wordpress-on-vip/block-editor/">Block editor</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17200"><a href="https://docs.wpvip.com/wordpress-on-vip/cron-control/">WP-Cron</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17027"><a href="https://docs.wpvip.com/wordpress-on-vip/customize-user-roles/">Customize user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17938"><a href="https://docs.wpvip.com/wordpress-on-vip/drop-ins/">Drop-ins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17212"><a href="https://docs.wpvip.com/wordpress-on-vip/email/">Email</a> <button aria-expanded="false" aria-label="Submenu for Email" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20915"><a href="https://docs.wpvip.com/wordpress-on-vip/email/send-from-custom-domain/">Send emails from a custom domain</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-17014"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/">Jetpack</a> <button aria-expanded="false" aria-label="Submenu for Jetpack" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20346"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/connections/">Jetpack connections</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17809"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/version-updates/">Version updates for Jetpack</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17141"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/content-distribution/">Control Jetpack content distribution</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17097"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/">WordPress multisite</a> <button aria-expanded="false" aria-label="Submenu for WordPress multisite" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17129"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/database-structure/">Database structure for multisites</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17126"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/network-sites/">Network Sites</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16973"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/create-new-sites/">Add a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18222"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/update-site-address-url/">Update the Site Address (URL) of a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17104"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/subdomains-subdirectories/">Subdomain and subdirectory structures</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17106"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/sunrise-php/">sunrise.php</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17211"><a href="https://docs.wpvip.com/wordpress-on-vip/php/">PHP</a> <button aria-expanded="false" aria-label="Submenu for PHP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17067"><a href="https://docs.wpvip.com/wordpress-on-vip/php/error-reporting/">PHP error reporting</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22230"><a href="https://docs.wpvip.com/wordpress-on-vip/php/php-sessions/">PHP sessions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17867"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/">Version updates for PHP</a> <button aria-expanded="false" aria-label="Submenu for Version updates for PHP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16982"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/code-scanning-for-php-upgrade/">Prepare application code for a PHP version update</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17862"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/phpcs-scans/">PHPCS scans for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17863"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/php-linting-scans/">PHP linting for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17864"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/static-analysis/">Static analysis tools for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17865"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/automated-tests/">Automated tests for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17866"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/platform-environment-tests/">Test a PHP update on a VIP Platform environment</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17041"><a href="https://docs.wpvip.com/wordpress-on-vip/local-time/">Obtaining a local time</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17197"><a href="https://docs.wpvip.com/wordpress-on-vip/post-revisions/">Post revisions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-20313"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/">Search options</a> <button aria-expanded="false" aria-label="Submenu for Search options" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-14794"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/wordpress-search/">Core WordPress search functionality</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9905"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/comparing-search-options/">Comparison of Elasticsearch options on WordPress VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9159"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/elasticsearch/">Elasticsearch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-14795"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/jetpack-search/">Jetpack Search</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17199"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-upgrades/">Version updates for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17178"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-rest-api/">WordPress REST API</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20245"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-single-site/">WordPress single site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17210"><a href="https://docs.wpvip.com/wordpress-on-vip/xml-rpc/">XML-RPC</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17174"><a href="https://docs.wpvip.com/wordpress-skeleton/">WordPress skeleton</a> <button aria-expanded="false" aria-label="Submenu for WordPress skeleton" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17193"><a href="https://docs.wpvip.com/wordpress-skeleton/client-mu-plugins-directory/">/client-mu-plugins directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17181"><a href="https://docs.wpvip.com/wordpress-skeleton/docs-directory/">/docs directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17192"><a href="https://docs.wpvip.com/wordpress-skeleton/images-directory/">/images directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17012"><a href="https://docs.wpvip.com/wordpress-skeleton/languages-directory/">/languages directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17194"><a href="https://docs.wpvip.com/wordpress-skeleton/plugins-directory/">/plugins directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17189"><a href="https://docs.wpvip.com/wordpress-skeleton/private-directory/">/private directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17190"><a href="https://docs.wpvip.com/wordpress-skeleton/themes-directory/">/themes directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17184"><a href="https://docs.wpvip.com/wordpress-skeleton/vip-config-directory/">/vip-config directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17183"><a href="https://docs.wpvip.com/wordpress-skeleton/editorconfig/">.editorconfig</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17182"><a href="https://docs.wpvip.com/wordpress-skeleton/phpcs-xml-dist/">.phpcs.xml.dist</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17013"><a href="https://docs.wpvip.com/wordpress-skeleton/serve-static-content-wp/">Serve static content</a></li> </ul> </li> </ul><ul class="a8c-docs-sidebar-footer is-style-muted"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10908"><a href="https://wordpressvip.zendesk.com/">Contact Support</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-11027"><a href="https://wpvipstatus.com/">WPVIP Status</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10905"><a href="https://lobby.vip.wordpress.com/">VIP Lobby</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10906"><a href="https://wpvip.com/resources/">Resource Library</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10907"><a href="https://docs.parse.ly/">Parse.ly Help</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-19760"><a href="https://wpvip.com/privacy/">Privacy Policy</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-15890"><a href="https://wpvip.com/accessibility/">Accessibility at WordPress VIP</a></li> </ul> </nav> <!-- .a8c-docs-layout__sidebar --> <nav aria-label="Main menu" class="a8c-docs-layout__sidebar__desktop"> <h2 class="a8c-docs-sidebar-list__heading">Guidebooks</h2><ul class="a8c-docs-sidebar-list"><li class="page_item page-item-21160 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/get-started/">Get started</a> <button aria-expanded="false" aria-label="Submenu for Get started" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-22416"><a href="https://docs.wpvip.com/guidebooks/get-started/basics/">The basics</a></li><li class="page_item page-item-21162"><a href="https://docs.wpvip.com/guidebooks/get-started/infrastructure-overview/">Infrastructure overview</a></li><li class="page_item page-item-21164"><a href="https://docs.wpvip.com/guidebooks/get-started/user-accounts-and-access/">User accounts and access</a></li><li class="page_item page-item-21166"><a href="https://docs.wpvip.com/guidebooks/get-started/adding-plugins-and-themes/">Adding plugins and themes</a></li><li class="page_item page-item-21168"><a href="https://docs.wpvip.com/guidebooks/get-started/getting-help/">Getting help</a></li></ul></li><li class="page_item page-item-21170 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/">Develop on WordPress VIP</a> <button aria-expanded="false" aria-label="Submenu for Develop on WordPress VIP" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-21172"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/user-accounts/">User accounts and access</a></li><li class="page_item page-item-21174"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/applications-and-environments/">Applications and their environments</a></li><li class="page_item page-item-21176"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/wpvip-infrastructure/">Infrastructure</a></li><li class="page_item page-item-21178"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/wordpress-apps/">Developing for WordPress applications</a></li><li class="page_item page-item-21180"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/node-js-apps/">Developing for Node.js applications</a></li><li class="page_item page-item-21182"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/local-and-cloud/">Local and cloud development</a></li><li class="page_item page-item-21184"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/branches-and-deployments/">GitHub branches and code deployments</a></li><li class="page_item page-item-21186"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/logs-and-monitoring/">Logs and performance monitoring</a></li><li class="page_item page-item-21188"><a href="https://docs.wpvip.com/guidebooks/develop-on-wpvip/get-help/">Getting help</a></li></ul></li><li class="page_item page-item-21190 page_item_has_children"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/">Prepare for a site launch</a> <button aria-expanded="false" aria-label="Submenu for Prepare for a site launch" class="a8c-docs-sidebar-list__toggle"></button><ul class='children'><li class="page_item page-item-21192"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/accounts-and-access/">Prepare user accounts and site access</a></li><li class="page_item page-item-21194"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/the-domain/">Prepare the domain</a></li><li class="page_item page-item-21196"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/migrate-content/">Migrate site content</a></li><li class="page_item page-item-21198"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/test-your-site/">Test your site</a></li><li class="page_item page-item-21200"><a href="https://docs.wpvip.com/guidebooks/prepare-for-launch/launch-your-site/">Launch your site</a></li></ul></li></ul><br /><h2 class="a8c-docs-sidebar-list__heading">All Categories</h2><ul class="a8c-docs-sidebar-list"><li class="menu-item menu-item-type-post_type menu-item-object-technical-references current-page-ancestor current-menu-ancestor current-menu-parent current-technical-references-parent menu-item-has-children menu-item-17100"><a href="https://docs.wpvip.com/access-and-routing/">Access & routing</a> <button aria-expanded="true" aria-label="Submenu for Access & routing" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references current-menu-item menu-item-17137"><a href="https://docs.wpvip.com/access-and-routing/access-controlled-files/" aria-current="page">Access-Controlled Files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16979"><a href="https://docs.wpvip.com/access-and-routing/basic-authentication/">Basic Authentication</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16990"><a href="https://docs.wpvip.com/access-and-routing/block-requests/">Block unwanted requests to a site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17008"><a href="https://docs.wpvip.com/access-and-routing/enable-hsts/">HTTP Strict-Transport-Security (HSTS)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16980"><a href="https://docs.wpvip.com/access-and-routing/ip-allow-list/">IP Allow List</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19075"><a href="https://docs.wpvip.com/access-and-routing/maintenance-mode/">Maintenance Mode plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17119"><a href="https://docs.wpvip.com/access-and-routing/partial-restriction-site-access/">Partial restriction of site access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16993"><a href="https://docs.wpvip.com/access-and-routing/robots-txt/">robots.txt</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9154"><a href="https://docs.wpvip.com/caching/">Caching</a> <button aria-expanded="false" aria-label="Submenu for Caching" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9839"><a href="https://docs.wpvip.com/caching/object-cache/">Object cache</a> <button aria-expanded="false" aria-label="Submenu for Object cache" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16433"><a href="https://docs.wpvip.com/caching/object-cache/flush-the-object-cache/">Flush the object cache</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-9835"><a href="https://docs.wpvip.com/caching/page-cache/">Page cache</a> <button aria-expanded="false" aria-label="Submenu for Page cache" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9840"><a href="https://docs.wpvip.com/caching/page-cache/cache-api/">Customize page cache behavior</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-14030"><a href="https://docs.wpvip.com/caching/page-cache/query-parameter-caching/">Caching of query parameters</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9841"><a href="https://docs.wpvip.com/caching/page-cache/cookies/">Cookies</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9842"><a href="https://docs.wpvip.com/caching/page-cache/stale-responses/">Stale responses</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17332"><a href="https://docs.wpvip.com/caching/page-cache/modify-max-age/">Cache-control headers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9833"><a href="https://docs.wpvip.com/caching/page-cache/purge-urls/">Purge a URL from the page cache</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9834"><a href="https://docs.wpvip.com/caching/page-cache/the-vip-cache-personalization-api/">The VIP Cache Personalization API</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9837"><a href="https://docs.wpvip.com/caching/query-cache/">Query cache</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-16037"><a href="https://docs.wpvip.com/caching/static-asset-caching/">Static asset caching</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9838"><a href="https://docs.wpvip.com/caching/uncached-functions/">Uncached functions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9832"><a href="https://docs.wpvip.com/caching/disable-term-cache-priming/">Disable WordPress Core’s term cache priming</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17990"><a href="https://docs.wpvip.com/code-deployment/">Code deployment</a> <button aria-expanded="false" aria-label="Submenu for Code deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21409"><a href="https://docs.wpvip.com/code-deployment/custom-deployment/">Custom Deployment</a> <button aria-expanded="false" aria-label="Submenu for Custom Deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22113"><a href="https://docs.wpvip.com/code-deployment/custom-deployment/continuous-deployment/">Custom Deployment with continuous deployment</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-21410"><a href="https://docs.wpvip.com/code-deployment/default-deployment/">Default Deployment</a> <button aria-expanded="false" aria-label="Submenu for Default Deployment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18736"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/">Build and deploy</a> <button aria-expanded="false" aria-label="Submenu for Build and deploy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17080"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/ci-cd/">Continuous integration and deployment (CI/CD)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16931"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/configure-builds-on-circleci/">Configure builds on CircleCI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18738"><a href="https://docs.wpvip.com/code-deployment/default-deployment/build-and-deploy/built-files-without-ci/">Deploying built files without a CI service</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17991"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/">Deploying branches</a> <button aria-expanded="false" aria-label="Submenu for Deploying branches" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16959"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/update/">Update an environment’s deploying branch</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17073"><a href="https://docs.wpvip.com/code-deployment/github-repository/">GitHub repository</a> <button aria-expanded="false" aria-label="Submenu for GitHub repository" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16928"><a href="https://docs.wpvip.com/code-deployment/github-repository/required-status-checks/">Enable required status checks for pull requests</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16929"><a href="https://docs.wpvip.com/code-deployment/github-repository/composer/">Using Composer on VIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17079"><a href="https://docs.wpvip.com/code-deployment/default-deployment/developing-from-another-repository/">Develop code in a non-wpcomvip repository</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21403"><a href="https://docs.wpvip.com/code-deployment/cache-clearing/">Code deployment and cache clearing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17087"><a href="https://docs.wpvip.com/code-deployment/default-deployment/deploying-branches/deployments-panel/">Deployments log in the VIP Dashboard</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18716"><a href="https://docs.wpvip.com/code-deployment/duration-of-time/">Duration of time for a deployment to complete</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17998"><a href="https://docs.wpvip.com/code-deployment/rollbacks/">Rollbacks in the VIP Dashboard</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17061"><a href="https://docs.wpvip.com/codebase-manager/">Codebase Manager</a> <button aria-expanded="false" aria-label="Submenu for Codebase Manager" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17069"><a href="https://docs.wpvip.com/codebase-manager/plugins-panel/">VIP Dashboard Plugins panel</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17072"><a href="https://docs.wpvip.com/codebase-manager/vulnerability-and-update-scan/">Vulnerability and Update Scan by the VIP Code Analysis Bot</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17063"><a href="https://docs.wpvip.com/databases/">Databases</a> <button aria-expanded="false" aria-label="Submenu for Databases" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22203"><a href="https://docs.wpvip.com/databases/access/">Database access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17059"><a href="https://docs.wpvip.com/databases/backups/">Database Backups</a> <button aria-expanded="false" aria-label="Submenu for Database Backups" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17518"><a href="https://docs.wpvip.com/databases/backups/limitations/">Limitations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17532"><a href="https://docs.wpvip.com/databases/backups/access/">Access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17538"><a href="https://docs.wpvip.com/databases/backups/download-a-full-database-backup/">Download a full database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17546"><a href="https://docs.wpvip.com/databases/backups/download-a-partial-database-backup/">Download a partial database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17551"><a href="https://docs.wpvip.com/databases/backups/download-a-database-backup-for-a-network-site/">Download a database backup for a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17556"><a href="https://docs.wpvip.com/databases/backups/generate-a-fresh-database-backup/">Generate a new database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17562"><a href="https://docs.wpvip.com/databases/backups/database-backup-link/">Copy a link to a prepared database backup</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16935"><a href="https://docs.wpvip.com/databases/backups/database-backup-shipping/">Database Backup Shipping</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17060"><a href="https://docs.wpvip.com/databases/data-sync/">Data sync from production to non-production environments</a> <button aria-expanded="false" aria-label="Submenu for Data sync from production to non-production environments" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17058"><a href="https://docs.wpvip.com/databases/data-sync/config-file/">Data sync config file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20781"><a href="https://docs.wpvip.com/databases/data-sync/cleanup-operations/">Cleanup operations for data syncing</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16923"><a href="https://docs.wpvip.com/databases/import/">Import database files</a> <button aria-expanded="false" aria-label="Submenu for Import database files" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17580"><a href="https://docs.wpvip.com/databases/import/import-with-vip-cli/">Import database files with VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16925"><a href="https://docs.wpvip.com/databases/import/validate-sql-file/">Validate a SQL database file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17591"><a href="https://docs.wpvip.com/databases/import/check-the-status/">Check the status of an import</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17579"><a href="https://docs.wpvip.com/databases/import/updating-values/">Update domain name values</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17587"><a href="https://docs.wpvip.com/databases/import/multisite-database-imports/">Database imports for multisite environments</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17600"><a href="https://docs.wpvip.com/databases/import/export-a-file-for-migration/">Export a SQL file from a site not hosted at WordPress VIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17030"><a href="https://docs.wpvip.com/databases/optimize-queries/">Optimize database queries</a> <button aria-expanded="false" aria-label="Submenu for Optimize database queries" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17042"><a href="https://docs.wpvip.com/databases/optimize-queries/using-post__not_in/">Avoid post__not_in</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17046"><a href="https://docs.wpvip.com/databases/optimize-queries/database-queries/">Best practices for database queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18513"><a href="https://docs.wpvip.com/databases/optimize-queries/defining-post_status-or-post_type/">Defining post_status or post_type</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17043"><a href="https://docs.wpvip.com/databases/optimize-queries/encode-values-passed-to-add_query_arg/">Encode values passed to `add_query_arg`</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16914"><a href="https://docs.wpvip.com/databases/optimize-queries/filtering-wp_unique_post_slug/">Fix performance issues by filtering wp_unique_post_slug</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22314"><a href="https://docs.wpvip.com/databases/optimize-queries/identify-slow-queries/">Identify slow queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17045"><a href="https://docs.wpvip.com/databases/optimize-queries/querying-on-meta_value/">Meta queries</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16915"><a href="https://docs.wpvip.com/databases/optimize-queries/optimize-core-queries-at-scale/">Optimize core queries at scale</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17047"><a href="https://docs.wpvip.com/databases/optimize-queries/retrieving-remote-data/">Retrieving remote data</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17044"><a href="https://docs.wpvip.com/databases/optimize-queries/term-queries-should-consider-include_children-false/">Taxonomy queries should set `include_children` to false</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17066"><a href="https://docs.wpvip.com/databases/supported-collations-charsets/">Supported character sets and collations</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17032"><a href="https://docs.wpvip.com/development-workflow/">Developing on WordPress VIP</a> <button aria-expanded="false" aria-label="Submenu for Developing on WordPress VIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17057"><a href="https://docs.wpvip.com/development-workflow/github-pr-reviews/">GitHub pull request flow</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17031"><a href="https://docs.wpvip.com/development-workflow/code-review/">Code review</a> <button aria-expanded="false" aria-label="Submenu for Code review" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17049"><a href="https://docs.wpvip.com/development-workflow/code-review/review-recommendations/">Reduce review times</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17048"><a href="https://docs.wpvip.com/development-workflow/code-review/reduce-pull-request-size/">Reduce the size of a pull request</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16919"><a href="https://docs.wpvip.com/development-workflow/create-good-changesets/">Create good changesets</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16920"><a href="https://docs.wpvip.com/development-workflow/write-a-good-commit-message/">Elements of a good commit message</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17007"><a href="https://docs.wpvip.com/development-workflow/contribute-to-wordpress/">Contribute to WordPress Core</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17075"><a href="https://docs.wpvip.com/domains/">Domains</a> <button aria-expanded="false" aria-label="Submenu for Domains" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16934"><a href="https://docs.wpvip.com/domains/map-a-domain/">Add a domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16933"><a href="https://docs.wpvip.com/domains/check-dns-record-time-to-live/">Check DNS record time to live (TTL)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17085"><a href="https://docs.wpvip.com/domains/convenience-domains/">Convenience domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21763"><a href="https://docs.wpvip.com/domains/default-behavior/">Default behavior of domains</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-22793"><a href="https://docs.wpvip.com/domains/dns-records-for-email/">DNS records to send email from a custom domain</a> <button aria-expanded="false" aria-label="Submenu for DNS records to send email from a custom domain" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22792"><a href="https://docs.wpvip.com/domains/dns-records-for-email/check-status/">Check the status of DNS records for email</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17082"><a href="https://docs.wpvip.com/domains/fqdn/">Fully qualified domain names (FQDN)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17084"><a href="https://docs.wpvip.com/domains/managing-your-hosts-file/">Modify a hosts file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16932"><a href="https://docs.wpvip.com/domains/point-dns-to-vip/">Point DNS for a domain to WPVIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16960"><a href="https://docs.wpvip.com/domains/primary-domain/">Primary domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19974"><a href="https://docs.wpvip.com/domains/verification/">Verify a domain</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17105"><a href="https://docs.wpvip.com/domains/multiple-domains/">Configure multiple domains to resolve to the same network site</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17093"><a href="https://docs.wpvip.com/enterprise-search/">Enterprise Search</a> <button aria-expanded="false" aria-label="Submenu for Enterprise Search" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21944"><a href="https://docs.wpvip.com/enterprise-search/es-limitations/">Limitations of Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16953"><a href="https://docs.wpvip.com/enterprise-search/enable/">Enable Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16948"><a href="https://docs.wpvip.com/enterprise-search/index/">Index with Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16942"><a href="https://docs.wpvip.com/enterprise-search/version/">Version with Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16945"><a href="https://docs.wpvip.com/enterprise-search/multisite/">Enterprise Search on multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16940"><a href="https://docs.wpvip.com/enterprise-search/check-index-health/">Check the index health</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16939"><a href="https://docs.wpvip.com/enterprise-search/indexing/">Choose what to index</a> <button aria-expanded="false" aria-label="Submenu for Choose what to index" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16952"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-types/">Indexing post types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16938"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-statuses/">Indexing post statuses</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16951"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-taxonomies/">Indexing post taxonomies</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16950"><a href="https://docs.wpvip.com/enterprise-search/indexing/post-meta/">Indexing post meta</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16963"><a href="https://docs.wpvip.com/enterprise-search/indexing/user-meta/">Indexing user meta</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16949"><a href="https://docs.wpvip.com/enterprise-search/enable-features/">Enable Enterprise Search features</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16946"><a href="https://docs.wpvip.com/enterprise-search/enable-non-search-queries/">Offload any WP_Query to Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16937"><a href="https://docs.wpvip.com/enterprise-search/enable-for-wp-admin/">Enable Enterprise Search for the WordPress Admin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16941"><a href="https://docs.wpvip.com/enterprise-search/search-tokenization/">Search tokenization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16947"><a href="https://docs.wpvip.com/enterprise-search/rate-limiting/">Rate limiting in Enterprise Search</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16944"><a href="https://docs.wpvip.com/enterprise-search/customize-search-results/">Customize search results</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16943"><a href="https://docs.wpvip.com/enterprise-search/dev-tools/">Debug with Enterprise Search Dev Tools</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17077"><a href="https://docs.wpvip.com/infrastructure/">Infrastructure</a> <button aria-expanded="false" aria-label="Submenu for Infrastructure" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17090"><a href="https://docs.wpvip.com/infrastructure/environments/">Environments</a> <button aria-expanded="false" aria-label="Submenu for Environments" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17094"><a href="https://docs.wpvip.com/infrastructure/environments/software-management/">Software Versions management</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16958"><a href="https://docs.wpvip.com/infrastructure/environments/manage-environment-variables/">Manage environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16927"><a href="https://docs.wpvip.com/infrastructure/environments/environment-specific-code/">Write environment-specific code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18130"><a href="https://docs.wpvip.com/infrastructure/environments/indicator-labels/">Environment indicator labels</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16974"><a href="https://docs.wpvip.com/infrastructure/origin-servers/">Origin servers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17078"><a href="https://docs.wpvip.com/infrastructure/edge-cache/">Edge cache servers</a> <button aria-expanded="false" aria-label="Submenu for Edge cache servers" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20867"><a href="https://docs.wpvip.com/infrastructure/edge-cache/file-compression/">Edge cache file compression</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20866"><a href="https://docs.wpvip.com/infrastructure/edge-cache/global-locations/">Global locations of edge cache servers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23052"><a href="https://docs.wpvip.com/infrastructure/edge-cache/target-a-location/">Target a specific edge server location</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17095"><a href="https://docs.wpvip.com/infrastructure/ip-geolocation/">IP geolocation</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17091"><a href="https://docs.wpvip.com/infrastructure/ip-ranges/">IP ranges</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16956"><a href="https://docs.wpvip.com/infrastructure/http-headers/">HTTP response headers</a> <button aria-expanded="false" aria-label="Submenu for HTTP response headers" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23059"><a href="https://docs.wpvip.com/infrastructure/http-headers/add-edit-or-remove/">Add, edit, or remove HTTP response headers</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23054"><a href="https://docs.wpvip.com/infrastructure/http-headers/added-by-wpvip/">HTTP response headers added by WPVIP</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17096"><a href="https://docs.wpvip.com/infrastructure/vip-user-agents/">VIP User-Agents</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16957"><a href="https://docs.wpvip.com/infrastructure/retire-a-site/">Retire a site from VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17092"><a href="https://docs.wpvip.com/infrastructure/disaster-recovery/">Disaster recovery</a> <button aria-expanded="false" aria-label="Submenu for Disaster recovery" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22339"><a href="https://docs.wpvip.com/infrastructure/disaster-recovery/geographical-redundancy/">Geographical Redundancy for disaster recovery</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16926"><a href="https://docs.wpvip.com/launch-a-site/">Launch a site</a> <button aria-expanded="false" aria-label="Submenu for Launch a site" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16954"><a href="https://docs.wpvip.com/launch-a-site/begin-a-single-site-launch/">Begin a single site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16969"><a href="https://docs.wpvip.com/launch-a-site/begin-a-multisite-launch/">Begin a network site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16989"><a href="https://docs.wpvip.com/launch-a-site/node-js-launch/">Begin a Node.js site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16968"><a href="https://docs.wpvip.com/launch-a-site/complete-a-site-launch/">Complete a site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16967"><a href="https://docs.wpvip.com/launch-a-site/launch-troubleshooting/">Troubleshoot a WordPress site launch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16970"><a href="https://docs.wpvip.com/launch-a-site/testing-your-site/">Test a WordPress site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20239"><a href="https://docs.wpvip.com/launch-a-site/launched/">Launched</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20240"><a href="https://docs.wpvip.com/launch-a-site/unlaunched/">Unlaunched</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17103"><a href="https://docs.wpvip.com/launch-a-site/order-of-launch/">Order of launching sites on a multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16966"><a href="https://docs.wpvip.com/launch-a-site/manual-launch/">Manually launch a site on a multisite</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18214"><a href="https://docs.wpvip.com/launch-a-site/redesign/">Launches for site redesigns</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16964"><a href="https://docs.wpvip.com/local-development/">Local and cloud development</a> <button aria-expanded="false" aria-label="Submenu for Local and cloud development" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16971"><a href="https://docs.wpvip.com/local-development/add-site-content/">Add VIP production site content for local development</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-19611"><a href="https://docs.wpvip.com/local-development/github-codespaces/">Developing with GitHub Codespaces</a> <button aria-expanded="false" aria-label="Submenu for Developing with GitHub Codespaces" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20541"><a href="https://docs.wpvip.com/local-development/github-codespaces/access-logs/">Access logs for GitHub Codespaces</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20510"><a href="https://docs.wpvip.com/local-development/github-codespaces/customize-config-file/">Customize the Codespaces configuration file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20504"><a href="https://docs.wpvip.com/local-development/github-codespaces/import-database/">Import a SQL database file to Codespaces</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20545"><a href="https://docs.wpvip.com/local-development/github-codespaces/codespaces-database-sync/">Sync a platform database to Codespaces</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16972"><a href="https://docs.wpvip.com/local-development/set-up-vvv/">Set up VVV for VIP development</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16988"><a href="https://docs.wpvip.com/local-development/third-party-app/">Set up a third-party local development app</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17883"><a href="https://docs.wpvip.com/logs/">Logs</a> <button aria-expanded="false" aria-label="Submenu for Logs" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17161"><a href="https://docs.wpvip.com/logs/audit-log/">Audit Log</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17088"><a href="https://docs.wpvip.com/logs/log-shipping/">HTTP request Log Shipping</a> <button aria-expanded="false" aria-label="Submenu for HTTP request Log Shipping" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20297"><a href="https://docs.wpvip.com/logs/log-shipping/aws-s3-bucket-requirements/">AWS S3 bucket requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16975"><a href="https://docs.wpvip.com/logs/log-shipping/enable/">Enable HTTP request Log Shipping</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19809"><a href="https://docs.wpvip.com/logs/log-shipping/log-contents/">Contents of HTTP request logs</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16955"><a href="https://docs.wpvip.com/logs/log-shipping/analyze-with-goaccess/">Analyze HTTP request logs with GoAccess</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17187"><a href="https://docs.wpvip.com/logs/runtime-logs/">Runtime Logs </a> <button aria-expanded="false" aria-label="Submenu for Runtime Logs " class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17158"><a href="https://docs.wpvip.com/logs/runtime-logs/dashboard/">Runtime Logs in the VIP Dashboard</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17001"><a href="https://docs.wpvip.com/logs/runtime-logs/cli/">Retrieve Runtime Logs with VIP-CLI</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17083"><a href="https://docs.wpvip.com/logs/slow-query/">Slow Query Logs</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17195"><a href="https://docs.wpvip.com/logs/wp-cli-commands/">WP-CLI Commands log</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16983"><a href="https://docs.wpvip.com/manage-user-access/">Manage user access</a> <button aria-expanded="false" aria-label="Submenu for Manage user access" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17123"><a href="https://docs.wpvip.com/manage-user-access/github/">GitHub user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17147"><a href="https://docs.wpvip.com/manage-user-access/new-relic/">New Relic user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17146"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/">VIP Dashboard access</a> <button aria-expanded="false" aria-label="Submenu for VIP Dashboard access" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17102"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/org-roles/">Org roles and permissions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17128"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/app-role/">App role and permissions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16985"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/invite-new-users/">Invite new users</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16986"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/edit-user-roles/">Edit user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18569"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/copy-user-roles/">Copy user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16987"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/remove-user/">Remove a user</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18499"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/">Single Sign-On</a> <button aria-expanded="false" aria-label="Submenu for Single Sign-On" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18498"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/configurations/">Configurations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18497"><a href="https://docs.wpvip.com/manage-user-access/vip-dashboard/sso/enforce-sso/">Enforce SSO</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17125"><a href="https://docs.wpvip.com/manage-user-access/wordpress/">WordPress user access</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17124"><a href="https://docs.wpvip.com/manage-user-access/zendesk/">Zendesk user access</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17098"><a href="https://docs.wpvip.com/node-js/">Node.js on WPVIP</a> <button aria-expanded="false" aria-label="Submenu for Node.js on WPVIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17145"><a href="https://docs.wpvip.com/node-js/application-requirements/">Node.js application requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17122"><a href="https://docs.wpvip.com/node-js/health-checks/">Health checks</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16981"><a href="https://docs.wpvip.com/node-js/manage-dependencies/">Manage dependencies in Node.js</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17120"><a href="https://docs.wpvip.com/node-js/building-applications/">Building Node.js applications</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16984"><a href="https://docs.wpvip.com/node-js/debug/">Debug a Node.js application</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17127"><a href="https://docs.wpvip.com/node-js/deployment-validation/">Deployment validation for Node.js applications</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17108"><a href="https://docs.wpvip.com/node-js/integrating-redis/">Integrating Redis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17109"><a href="https://docs.wpvip.com/node-js/managing-node-js-versions/">Managing Node.js versions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17107"><a href="https://docs.wpvip.com/node-js/environment-variables/">Node.js environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16977"><a href="https://docs.wpvip.com/node-js/serve-static-content/">Serve static content</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17121"><a href="https://docs.wpvip.com/node-js/websockets/">WebSockets</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17289"><a href="https://docs.wpvip.com/notifications/">Notifications</a> <button aria-expanded="false" aria-label="Submenu for Notifications" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17293"><a href="https://docs.wpvip.com/notifications/destinations/">Destinations</a> <button aria-expanded="false" aria-label="Submenu for Destinations" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17290"><a href="https://docs.wpvip.com/notifications/destinations/webhook-urls/">General-purpose webhook URLs</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21636"><a href="https://docs.wpvip.com/notifications/important-alerts/">Important Alerts</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22277"><a href="https://docs.wpvip.com/notifications/event-types/">Notification event types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17292"><a href="https://docs.wpvip.com/notifications/organization-notifications/">Notifications for an organization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17291"><a href="https://docs.wpvip.com/notifications/application-notifications/">Notifications for an application</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17111"><a href="https://docs.wpvip.com/parse-ly/">Parse.ly</a> <button aria-expanded="false" aria-label="Submenu for Parse.ly" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20451"><a href="https://docs.wpvip.com/parse-ly/wp-parsely/">wp-parsely plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16992"><a href="https://docs.wpvip.com/parse-ly/enabling-and-disabling/">Enabling and disabling wp-parsely</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-20450"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/">wp-parsely features</a> <button aria-expanded="false" aria-label="Submenu for wp-parsely features" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20449"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/content-helper/">Content Helper</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20448"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/title-suggestions/">Title Suggestions (Beta)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20447"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/excerpt-suggestions/">Excerpt Suggestions (Beta)</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20446"><a href="https://docs.wpvip.com/parse-ly/wp-parsely-features/smart-linking/">Smart Linking (Beta)</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17144"><a href="https://docs.wpvip.com/parse-ly/configuration/">Configuration</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17143"><a href="https://docs.wpvip.com/parse-ly/consent-management/">Consent management and Parse.ly</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17884"><a href="https://docs.wpvip.com/performance/">Performance</a> <button aria-expanded="false" aria-label="Submenu for Performance" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16916"><a href="https://docs.wpvip.com/performance/analyze-server-performance/">Analyze a site’s server performance</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19262"><a href="https://docs.wpvip.com/performance/analyze-requests-and-application-code/">Analyze requests and application code for performance</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-18819"><a href="https://docs.wpvip.com/performance/insights-metrics/">Insights & Metrics</a> <button aria-expanded="false" aria-label="Submenu for Insights & Metrics" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20685"><a href="https://docs.wpvip.com/performance/insights-metrics/http-metrics/">HTTP metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20686"><a href="https://docs.wpvip.com/performance/insights-metrics/resource-metrics/">Resource Usage metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20687"><a href="https://docs.wpvip.com/performance/insights-metrics/database-metrics/">Database metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20688"><a href="https://docs.wpvip.com/performance/insights-metrics/cache-metrics/">Cache metrics</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22278"><a href="https://docs.wpvip.com/performance/insights-metrics/anomalies/">Performance metrics anomalies</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18260"><a href="https://docs.wpvip.com/performance/load-testing/">Load testing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17055"><a href="https://docs.wpvip.com/performance/new-relic/">New Relic</a> <button aria-expanded="false" aria-label="Submenu for New Relic" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17065"><a href="https://docs.wpvip.com/performance/new-relic/for-node-js/">New Relic for Node.js</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17064"><a href="https://docs.wpvip.com/performance/new-relic/for-wordpress/">New Relic for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16922"><a href="https://docs.wpvip.com/performance/new-relic/manually-log-errors/">Manually log errors in New Relic</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17068"><a href="https://docs.wpvip.com/performance/query-monitor/">Query Monitor</a> <button aria-expanded="false" aria-label="Submenu for Query Monitor" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16921"><a href="https://docs.wpvip.com/performance/query-monitor/enable/">Enable Query Monitor</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19263"><a href="https://docs.wpvip.com/performance/identify-performance-issues/">Resources for identifying performance issues</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16965"><a href="https://docs.wpvip.com/php_codesniffer/">PHPCS</a> <button aria-expanded="false" aria-label="Submenu for PHPCS" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17629"><a href="https://docs.wpvip.com/php_codesniffer/install-globally/">Install PHPCS globally</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17628"><a href="https://docs.wpvip.com/php_codesniffer/install-at-project-level/">Install PHPCS at the project level</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17630"><a href="https://docs.wpvip.com/php_codesniffer/run-against-code/">Run PHPCS against code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17101"><a href="https://docs.wpvip.com/php_codesniffer/phpcs-report/">Interpreting a PHPCS report</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17053"><a href="https://docs.wpvip.com/php_codesniffer/errors/">PHPCS errors</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17052"><a href="https://docs.wpvip.com/php_codesniffer/warnings/">PHPCS warnings</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-18961"><a href="https://docs.wpvip.com/plugins/">Plugins</a> <button aria-expanded="false" aria-label="Submenu for Plugins" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9962"><a href="https://docs.wpvip.com/plugins/installing-plugins/">Add a plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-9951"><a href="https://docs.wpvip.com/plugins/activate-plugins-through-code/">Activate a plugin through code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9960"><a href="https://docs.wpvip.com/plugins/version-updates-and-maintenance/">Version updates for third-party plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9958"><a href="https://docs.wpvip.com/plugins/third-party-plugins/">Evaluate third-party plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9949"><a href="https://docs.wpvip.com/plugins/incompatibilities/">Plugin incompatibilities</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9961"><a href="https://docs.wpvip.com/plugins/load-order/">Load order of plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-14891"><a href="https://docs.wpvip.com/plugins/automattic-plugins/">Automattic plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9959"><a href="https://docs.wpvip.com/plugins/technology-partner-plugins/">Technology Partner plugins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17512"><a href="https://docs.wpvip.com/plugins/helper-file/">Plugin helper file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17177"><a href="https://docs.wpvip.com/plugins/woocommerce/">WooCommerce</a> <button aria-expanded="false" aria-label="Submenu for WooCommerce" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17024"><a href="https://docs.wpvip.com/plugins/woocommerce/upgrade-woocommerce/">Upgrade WooCommerce on VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17206"><a href="https://docs.wpvip.com/plugins/woocommerce/caching-for-woocommerce/">Caching for WooCommerce</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17205"><a href="https://docs.wpvip.com/plugins/woocommerce/customizing-woocommerce/">Customizing WooCommerce</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17025"><a href="https://docs.wpvip.com/plugins/woocommerce/woocommerce-debug-logging/">Enable WooCommerce Debug Logging</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17026"><a href="https://docs.wpvip.com/plugins/woocommerce/troubleshoot-woocommerce/">Troubleshoot WooCommerce</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17099"><a href="https://docs.wpvip.com/redirects/">Redirects</a> <button aria-expanded="false" aria-label="Submenu for Redirects" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21937"><a href="https://docs.wpvip.com/redirects/limitations-for-files/">Limitations on redirects for files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17117"><a href="https://docs.wpvip.com/redirects/domain-redirects-in-vip-config-php/">Redirects in vip-config.php</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17118"><a href="https://docs.wpvip.com/redirects/redirects-in-theme-code/">Writing redirects directly into a site’s theme code</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17138"><a href="https://docs.wpvip.com/reverse-proxy/">Reverse proxy</a> <button aria-expanded="false" aria-label="Submenu for Reverse proxy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16991"><a href="https://docs.wpvip.com/reverse-proxy/configure/">Configure a reverse proxy</a> <button aria-expanded="false" aria-label="Submenu for Configure a reverse proxy" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19122"><a href="https://docs.wpvip.com/reverse-proxy/configure/request-header-verification/">Log True-Client-IP and add a proxy verification method</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19121"><a href="https://docs.wpvip.com/reverse-proxy/configure/ip-allow-list-verification/">Log True-Client-IP with an IP allow list</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17004"><a href="https://docs.wpvip.com/reverse-proxy/test/">Test a proxy configuration</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17005"><a href="https://docs.wpvip.com/reverse-proxy/domains-and-tls/">Configure domains and TLS for a reverse proxy</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17131"><a href="https://docs.wpvip.com/security/">Security</a> <button aria-expanded="false" aria-label="Submenu for Security" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17173"><a href="https://docs.wpvip.com/security/for-wordpress/">WordPress security on VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17149"><a href="https://docs.wpvip.com/security/user-recommendations/">Security recommendations for all users</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17140"><a href="https://docs.wpvip.com/security/wordpress-sso/">Single Sign-On (SSO) for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17139"><a href="https://docs.wpvip.com/security/two-factor-authentication/">Two-factor authentication for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17871"><a href="https://docs.wpvip.com/security/penetration-testing/">Penetration testing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22572"><a href="https://docs.wpvip.com/security/phishing/">Phishing</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17150"><a href="https://docs.wpvip.com/security/javascript-security-recommendations/">JavaScript security recommendations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17148"><a href="https://docs.wpvip.com/security/validating-sanitizing-and-escaping/">Validating, sanitizing, and escaping</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17136"><a href="https://docs.wpvip.com/tls/">TLS</a> <button aria-expanded="false" aria-label="Submenu for TLS" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16994"><a href="https://docs.wpvip.com/tls/lets-encrypt/">Install a Let’s Encrypt TLS certificate</a> <button aria-expanded="false" aria-label="Submenu for Install a Let’s Encrypt TLS certificate" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18632"><a href="https://docs.wpvip.com/tls/lets-encrypt/re-install/">Re-install a Let’s Encrypt certificate</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18627"><a href="https://docs.wpvip.com/tls/lets-encrypt/switch-to-custom-certificate/">Switch from a Let’s Encrypt certificate to a custom TLS certificate</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-16995"><a href="https://docs.wpvip.com/tls/custom-cert/">Install a custom TLS certificate</a> <button aria-expanded="false" aria-label="Submenu for Install a custom TLS certificate" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18057"><a href="https://docs.wpvip.com/tls/custom-cert/requirements/">Requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18056"><a href="https://docs.wpvip.com/tls/custom-cert/custom-tls-vip-csr/">Custom TLS certificates with a VIP CSR</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18055"><a href="https://docs.wpvip.com/tls/custom-cert/custom-tls-non-vip-csr/">Custom TLS certificates with a non-VIP CSR</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18643"><a href="https://docs.wpvip.com/tls/custom-cert/renew/">Renew a custom TLS certificate</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-18054"><a href="https://docs.wpvip.com/tls/custom-cert/switch-to-lets-encrypt/">Switch from a custom TLS certificate to a Let’s Encrypt certificate</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17132"><a href="https://docs.wpvip.com/vip-code-analysis-bot/">VIP Code Analysis Bot</a> <button aria-expanded="false" aria-label="Submenu for VIP Code Analysis Bot" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17155"><a href="https://docs.wpvip.com/vip-code-analysis-bot/default-behavior/">Default behavior of the Bot</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17153"><a href="https://docs.wpvip.com/vip-code-analysis-bot/feedback/">Bot feedback and messages</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17151"><a href="https://docs.wpvip.com/vip-code-analysis-bot/auto-approvals/">Auto approvals</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17157"><a href="https://docs.wpvip.com/vip-code-analysis-bot/phpcs-analysis/">PHPCS analysis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16997"><a href="https://docs.wpvip.com/vip-code-analysis-bot/customize-phpcs/">Customize PHPCS scanning</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17156"><a href="https://docs.wpvip.com/vip-code-analysis-bot/svg-analysis/">SVG analysis</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17154"><a href="https://docs.wpvip.com/vip-code-analysis-bot/php-linting/">PHP linting</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17152"><a href="https://docs.wpvip.com/vip-code-analysis-bot/build-status/">GitHub build status</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16996"><a href="https://docs.wpvip.com/vip-code-analysis-bot/customize-the-bot/">Customize the VIP Code Analysis Bot</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17133"><a href="https://docs.wpvip.com/vip-dashboard/">VIP Dashboard</a> <button aria-expanded="false" aria-label="Submenu for VIP Dashboard" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17159"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/">Log in to the VIP Dashboard</a> <button aria-expanded="false" aria-label="Submenu for Log in to the VIP Dashboard" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19013"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/github-auth/">Sign in with GitHub</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19012"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/sso-auth/">Sign in with SSO</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19014"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/wordpress-com-auth/">Sign in with WordPress.com</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22514"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/vip-auth/">VIP Authentication</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18496"><a href="https://docs.wpvip.com/vip-dashboard/vip-dashboard-log-in/troubleshooting/">Login failure errors</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17303"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/">Organization view</a> <button aria-expanded="false" aria-label="Submenu for Organization view" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20261"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/organization/">Organization</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17162"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/usage/">Usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17188"><a href="https://docs.wpvip.com/vip-dashboard/organization-view/people/">People</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17304"><a href="https://docs.wpvip.com/vip-dashboard/application-view/">Application view</a> <button aria-expanded="false" aria-label="Submenu for Application view" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-16976"><a href="https://docs.wpvip.com/vip-dashboard/application-view/application/">Application</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17160"><a href="https://docs.wpvip.com/vip-dashboard/overview/">Overview</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17186"><a href="https://docs.wpvip.com/vip-dashboard/user-settings/">Settings</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17185"><a href="https://docs.wpvip.com/vip-dashboard/my-organizations/">My Organizations</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17134"><a href="https://docs.wpvip.com/vip-file-system/">VIP File System</a> <button aria-expanded="false" aria-label="Submenu for VIP File System" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17002"><a href="https://docs.wpvip.com/vip-file-system/import-media-files/">Import media files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17006"><a href="https://docs.wpvip.com/vip-file-system/media-backups/">Media Backups</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17164"><a href="https://docs.wpvip.com/vip-file-system/supported-file-types/">Supported file types</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17169"><a href="https://docs.wpvip.com/vip-file-system/image-files/">Image file behavior</a> <button aria-expanded="false" aria-label="Submenu for Image file behavior" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19825"><a href="https://docs.wpvip.com/vip-file-system/image-files/image-quality/">Image quality and next-gen formats</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17165"><a href="https://docs.wpvip.com/vip-file-system/image-files/transformations/">Image transformation</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17168"><a href="https://docs.wpvip.com/vip-file-system/image-files/intermediate-images/">Intermediate images</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17167"><a href="https://docs.wpvip.com/vip-file-system/image-files/responsive-images/">Responsive images</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16998"><a href="https://docs.wpvip.com/vip-file-system/image-files/strip-image-metadata/">Strip image metadata on upload</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17945"><a href="https://docs.wpvip.com/vip-file-system/modify-uploads-directory/">Modify the /uploads path structure</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17932"><a href="https://docs.wpvip.com/vip-file-system/versioning-files/">Overwriting and versioning files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17166"><a href="https://docs.wpvip.com/vip-file-system/shared-media-files/">Shared media files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17171"><a href="https://docs.wpvip.com/vip-file-system/media-uploads/">Working with uploaded files</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17170"><a href="https://docs.wpvip.com/vip-file-system/local-file-operations/">Working with the /tmp directory</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17135"><a href="https://docs.wpvip.com/vip-local-development-environment/">VIP Local Development Environment</a> <button aria-expanded="false" aria-label="Submenu for VIP Local Development Environment" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21131"><a href="https://docs.wpvip.com/vip-local-development-environment/limitations/">Limitations</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21130"><a href="https://docs.wpvip.com/vip-local-development-environment/requirements/">Requirements</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21049"><a href="https://docs.wpvip.com/vip-local-development-environment/stack-services/">Stack services</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17172"><a href="https://docs.wpvip.com/vip-local-development-environment/basic-usage/">Basic usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17011"><a href="https://docs.wpvip.com/vip-local-development-environment/dev-env-advanced-usage/">Advanced usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17000"><a href="https://docs.wpvip.com/vip-local-development-environment/create/">Create a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17009"><a href="https://docs.wpvip.com/vip-local-development-environment/load-application-code/">Update a local environment to load application code</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17003"><a href="https://docs.wpvip.com/vip-local-development-environment/add-database-content/">Sync or import database content to a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17010"><a href="https://docs.wpvip.com/vip-local-development-environment/add-media-content/">Add media to a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17387"><a href="https://docs.wpvip.com/vip-local-development-environment/enable-https/">Enable HTTPS</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20517"><a href="https://docs.wpvip.com/vip-local-development-environment/environment-variables/">Manage environment variables</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16999"><a href="https://docs.wpvip.com/vip-local-development-environment/use-enterprise-search/">Use Enterprise Search on a VIP Local Development Environment</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17196"><a href="https://docs.wpvip.com/vip-local-development-environment/networking/">Networking</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17207"><a href="https://docs.wpvip.com/vip-local-development-environment/troubleshooting-dev-env/">Troubleshooting</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17191"><a href="https://docs.wpvip.com/vip-go-mu-plugins/">VIP MU plugins</a> <button aria-expanded="false" aria-label="Submenu for VIP MU plugins" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17215"><a href="https://docs.wpvip.com/vip-go-mu-plugins/branches-and-updates/">VIP MU plugins branches and updates</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17216"><a href="https://docs.wpvip.com/vip-go-mu-plugins/block-data-api-plugin/">Block Data API plugin</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17198"><a href="https://docs.wpvip.com/vip-go-mu-plugins/file-concatenation-and-minification/">File concatenation and minification</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18154"><a href="https://docs.wpvip.com/vip-go-mu-plugins/block-governance-plugin/">WordPress VIP Block Governance plugin</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17175"><a href="https://docs.wpvip.com/vip-support/">WPVIP Support</a> <button aria-expanded="false" aria-label="Submenu for WPVIP Support" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22361"><a href="https://docs.wpvip.com/vip-support/information-in-a-ticket/">Information to include in a Support ticket</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17209"><a href="https://docs.wpvip.com/vip-support/site-access/">Site access for WPVIP Support</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17179"><a href="https://docs.wpvip.com/vip-support/vip-product-feedback/">Product feedback</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17017"><a href="https://docs.wpvip.com/vip-support/add-powered-by-wordpress-vip-to-your-site/">Add “Powered by WordPress VIP” to a site</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17176"><a href="https://docs.wpvip.com/vip-cli/">VIP-CLI</a> <button aria-expanded="false" aria-label="Submenu for VIP-CLI" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17204"><a href="https://docs.wpvip.com/vip-cli/installing-vip-cli/">Install VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19696"><a href="https://docs.wpvip.com/vip-cli/commands/">Command reference</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17018"><a href="https://docs.wpvip.com/vip-cli/target-environments/">Target environments with VIP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17202"><a href="https://docs.wpvip.com/vip-cli/advanced-usage/">Advanced usage</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17203"><a href="https://docs.wpvip.com/vip-cli/troubleshooting/">Troubleshooting VIP-CLI</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17214"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/">WP-CLI with VIP-CLI</a> <button aria-expanded="false" aria-label="Submenu for WP-CLI with VIP-CLI" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17201"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/disallowed-commands/">Disallowed WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17022"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/search-replace/">Use WP-CLI search-replace</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17019"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/save-command-output/">Save command output to a file</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17023"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/write-custom-wp-cli-commands/">Write custom WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17020"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/wp-cli-commands-on-vip/">Best practices for writing WP-CLI commands</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17021"><a href="https://docs.wpvip.com/vip-cli/wp-cli-with-vip-cli/cli-commands-at-scale/">Write custom WP-CLI commands at scale</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17208"><a href="https://docs.wpvip.com/wordpress-on-vip/">WordPress on WPVIP</a> <button aria-expanded="false" aria-label="Submenu for WordPress on WPVIP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17213"><a href="https://docs.wpvip.com/wordpress-on-vip/action-scheduler/">Action Scheduler</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17071"><a href="https://docs.wpvip.com/wordpress-on-vip/autoloaded-options/">Autoloaded options</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17180"><a href="https://docs.wpvip.com/wordpress-on-vip/block-editor/">Block editor</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17200"><a href="https://docs.wpvip.com/wordpress-on-vip/cron-control/">WP-Cron</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17027"><a href="https://docs.wpvip.com/wordpress-on-vip/customize-user-roles/">Customize user roles</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17938"><a href="https://docs.wpvip.com/wordpress-on-vip/drop-ins/">Drop-ins</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17212"><a href="https://docs.wpvip.com/wordpress-on-vip/email/">Email</a> <button aria-expanded="false" aria-label="Submenu for Email" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20915"><a href="https://docs.wpvip.com/wordpress-on-vip/email/send-from-custom-domain/">Send emails from a custom domain</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-has-children menu-item-17014"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/">Jetpack</a> <button aria-expanded="false" aria-label="Submenu for Jetpack" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20346"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/connections/">Jetpack connections</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17809"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/version-updates/">Version updates for Jetpack</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17141"><a href="https://docs.wpvip.com/wordpress-on-vip/jetpack/content-distribution/">Control Jetpack content distribution</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17097"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/">WordPress multisite</a> <button aria-expanded="false" aria-label="Submenu for WordPress multisite" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17129"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/database-structure/">Database structure for multisites</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17126"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/network-sites/">Network Sites</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16973"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/create-new-sites/">Add a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-18222"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/update-site-address-url/">Update the Site Address (URL) of a network site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17104"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/subdomains-subdirectories/">Subdomain and subdirectory structures</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17106"><a href="https://docs.wpvip.com/wordpress-on-vip/multisites/sunrise-php/">sunrise.php</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17211"><a href="https://docs.wpvip.com/wordpress-on-vip/php/">PHP</a> <button aria-expanded="false" aria-label="Submenu for PHP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17067"><a href="https://docs.wpvip.com/wordpress-on-vip/php/error-reporting/">PHP error reporting</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22230"><a href="https://docs.wpvip.com/wordpress-on-vip/php/php-sessions/">PHP sessions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17867"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/">Version updates for PHP</a> <button aria-expanded="false" aria-label="Submenu for Version updates for PHP" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-16982"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/code-scanning-for-php-upgrade/">Prepare application code for a PHP version update</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17862"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/phpcs-scans/">PHPCS scans for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17863"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/php-linting-scans/">PHP linting for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17864"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/static-analysis/">Static analysis tools for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17865"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/automated-tests/">Automated tests for PHP version compatibility</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17866"><a href="https://docs.wpvip.com/wordpress-on-vip/php/versions/platform-environment-tests/">Test a PHP update on a VIP Platform environment</a></li> </ul> </li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17041"><a href="https://docs.wpvip.com/wordpress-on-vip/local-time/">Obtaining a local time</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17197"><a href="https://docs.wpvip.com/wordpress-on-vip/post-revisions/">Post revisions</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-20313"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/">Search options</a> <button aria-expanded="false" aria-label="Submenu for Search options" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-14794"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/wordpress-search/">Core WordPress search functionality</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9905"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/comparing-search-options/">Comparison of Elasticsearch options on WordPress VIP</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-9159"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/elasticsearch/">Elasticsearch</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-backgrounds menu-item-14795"><a href="https://docs.wpvip.com/wordpress-on-vip/search-options/jetpack-search/">Jetpack Search</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17199"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-upgrades/">Version updates for WordPress</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17178"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-rest-api/">WordPress REST API</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20245"><a href="https://docs.wpvip.com/wordpress-on-vip/wordpress-single-site/">WordPress single site</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17210"><a href="https://docs.wpvip.com/wordpress-on-vip/xml-rpc/">XML-RPC</a></li> </ul> </li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-has-children menu-item-17174"><a href="https://docs.wpvip.com/wordpress-skeleton/">WordPress skeleton</a> <button aria-expanded="false" aria-label="Submenu for WordPress skeleton" class="a8c-docs-sidebar-list__toggle"></button> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17193"><a href="https://docs.wpvip.com/wordpress-skeleton/client-mu-plugins-directory/">/client-mu-plugins directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17181"><a href="https://docs.wpvip.com/wordpress-skeleton/docs-directory/">/docs directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17192"><a href="https://docs.wpvip.com/wordpress-skeleton/images-directory/">/images directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17012"><a href="https://docs.wpvip.com/wordpress-skeleton/languages-directory/">/languages directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17194"><a href="https://docs.wpvip.com/wordpress-skeleton/plugins-directory/">/plugins directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17189"><a href="https://docs.wpvip.com/wordpress-skeleton/private-directory/">/private directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17190"><a href="https://docs.wpvip.com/wordpress-skeleton/themes-directory/">/themes directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17184"><a href="https://docs.wpvip.com/wordpress-skeleton/vip-config-directory/">/vip-config directory</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17183"><a href="https://docs.wpvip.com/wordpress-skeleton/editorconfig/">.editorconfig</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-technical-references menu-item-17182"><a href="https://docs.wpvip.com/wordpress-skeleton/phpcs-xml-dist/">.phpcs.xml.dist</a></li> <li class="menu-item menu-item-type-post_type menu-item-object-how-tos menu-item-17013"><a href="https://docs.wpvip.com/wordpress-skeleton/serve-static-content-wp/">Serve static content</a></li> </ul> </li> </ul><ul class="a8c-docs-sidebar-footer is-style-muted"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10908"><a href="https://wordpressvip.zendesk.com/">Contact Support</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-11027"><a href="https://wpvipstatus.com/">WPVIP Status</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10905"><a href="https://lobby.vip.wordpress.com/">VIP Lobby</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10906"><a href="https://wpvip.com/resources/">Resource Library</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10907"><a href="https://docs.parse.ly/">Parse.ly Help</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-19760"><a href="https://wpvip.com/privacy/">Privacy Policy</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-15890"><a href="https://wpvip.com/accessibility/">Accessibility at WordPress VIP</a></li> </ul> </nav> <!-- .a8c-docs-layout__sidebar --> <div class="a8c-docs-layout__main__content" id="a8c-docs-toc-scroll"> <div id="a8c-docs-toc-content" class="a8c-docs-layout__main__content__inner"> <div class="a8c-docs-layout__main__content__primary"> <main> <article class="a8c-docs-entry post-3169 page type-page status-publish hentry category-access-routing tag-tech-ref" aria-label="Access-Controlled Files" id="post-3169" > <header class="a8c-docs-entry__header"> <h1 class="a8c-docs-entry__title"> Access-Controlled Files</h1> </header> <!-- .a8c-docs-entry__header --> <div class="a8c-docs-entry__content"> <p>The Access-Controlled Files feature restricts access to files and media uploaded to the WordPress Media Library of a site. Two modes of Access-Controlled Files are supported: <strong>Restrict access to unpublished files</strong> or <strong>Restrict access to all files</strong>.</p> <div class="a8c-docs-note-block wp-reference"> <p><strong>Prerequisites</strong></p> <ul class="wp-block-list"> <li><strong>The Access-Controlled Files feature must be activated for an environment before a mode can be enabled</strong>. <a href="https://wordpressvip.zendesk.com/">Create a request with WPVIP Support</a> and indicate in the request which environment(s) should have the Access-Controlled Files feature activated.</li> <li>To enable a mode for Access-Controlled Files with VIP-CLI commands, <a href="https://docs.wpvip.com/vip-cli/installing-vip-cli/">VIP-CLI must already be installed</a> on the local machine and updated to <a href="https://www.npmjs.com/package/@automattic/vip/v/latest">the most current version</a>.</li> </ul> </div> <h2 class="wp-block-heading">Limitations</h2> <ul class="wp-block-list"> <li>Only one mode can be enabled on a single WordPress environment at a single time.</li> <li>The Access-Controlled Files feature has no effect on static files (e.g., CSS, JS) committed to an application’s GitHub repository.</li> <li>The Access-Controlled Files feature is incompatible with <a href="https://docs.wpvip.com/basic-authentication/">WPVIP’s Basic Authentication</a>. Environments with Basic Authentication enabled cannot activate the Access-Controlled Files feature. To restrict access to the front end of a site while the Access-Controlled Files feature is active, using a different access restriction method is recommended, such as <a href="https://github.com/Automattic/maintenance-mode-wp">the maintenance mode plugin</a>.</li> <li>The Access-Controlled Files feature will not work as expected if <a href="https://docs.wpvip.com/infrastructure/ip-geolocation/" target="_blank" rel="noreferrer noopener">IP geolocation</a> is used to determine which requests should be allowed access.</li> <li>A VIP Local Development Environment will be unable to <a href="https://docs.wpvip.com/vip-local-development-environment/add-media-content/#h-proxy-media-files">proxy media files</a> from a WordPress multisite environment that has the Access-Controlled Files feature activated.</li> </ul> <h2 class="wp-block-heading">Default settings</h2> <p>By default, activating the Access-Controlled Files feature on a production environment will cause the feature to also be activated on all non-production environments in that application.</p> <ul class="wp-block-list"> <li>Until a mode has been enabled on the production environment, the <strong>Restrict access to all files</strong> mode will be enabled on all non-production environments by default.</li> <li>When a mode <em>is</em> enabled on the production environment, that same mode will automatically be enabled on all non-production environments.</li> <li>The mode enabled on any single environment can be overridden by enabling a different mode via code or VIP-CLI. </li> </ul> <div class="a8c-docs-note-block general"> <p><strong>Note</strong></p> <p><strong>Enabling a mode on a single environment that differs from an application’s other environments is discouraged.</strong> Inconsistent settings between environments can negatively affect the ability to troubleshoot unexpected behavior during development and testing.</p> </div> <ul class="wp-block-list"> <li>To fully deactivate the Access-Controlled files feature on any single environment, <a href="https://wordpressvip.zendesk.com/">create a WPVIP Support request</a>.</li> </ul> <div class="a8c-docs-note-block caution"> <p><strong>Caution</strong></p> <p><strong>If Access-Controlled Files is active on a production environment, it is not recommended to deactivate the feature on any of its associated non-production environments.</strong> The VIP File System’s <a href="https://docs.wpvip.com/vip-file-system/shared-media-files/">shared media files feature</a> automatically provides a non-production environment with access to media associated with the production environment. It is possible for requests for the production media files through the non-production environment to be successful if Access-Controlled Files is disabled on the non-production environment.</p> </div> <h2 class="wp-block-heading" id="h-considerations">Considerations</h2> <p>Cached responses for file URLs might already exist on the edge cache prior to the activation of the Access-Controlled Files feature and mode enablement. <a href="https://docs.wpvip.com/caching/page-cache/purge-urls/">Cached content for file URLs must be purged from the edge cache</a> in order for those requests to receive the expected <code>404</code> response.</p> <h3 class="wp-block-heading" id="h-performance-impact">Performance Impact</h3> <p>Enabling this feature can increase response times for files uploaded to the WordPress Media Library. Serving a file while this feature is active may involve a request to the WordPress application to determine per-user permissions, adding to the overall response time.</p> <ul class="wp-block-list"> <li>For <strong>Access-controlled </strong>files and media, all requests can be around 10-15% slower.</li> <li>For <strong>public</strong> files and media, the first (uncached) request is expected to be around 10-15% slower. All future requests are cached and should not be impacted.</li> </ul> <h3 class="wp-block-heading" id="h-incompatible-with-basic-authentication">Potential conflict for self-referencing files</h3> <p>It might be necessary to import a WordPress XML file to an environment that has the same domain as the site from which the XML file was exported. This will result in an import that is “self-referencing”, meaning that it both exports <em>from</em> and imports <em>into</em> the same domain. An import of this kind can happen when adding media library references to a site’s media library following a <a href="https://docs.wpvip.com/vip-file-system/import-media-files/">media import</a>.</p> <p>If Access-Controlled Files is enabled, the <a href="https://wordpress.org/support/article/importing-content/#wordpress">WordPress importer</a> will be unable to access the media path for a given media asset. The WordPress importer is only able to add media references to a media library if the media path is publicly accessible.</p> <p>To prevent this issue, set <code>VIP_FILES_ACL_ENABLED</code> to <code>false</code> in <code>/vip-config/vip-config.php</code> for the duration of the XML import. The constant can be set back to <code>true</code> after the import has been completed.</p> <p></p> <h2 class="wp-block-heading">Enable “Restrict access to unpublished files” mode</h2> <p>When the <strong>Restrict access to unpublished files</strong> mode is enabled, files attached to draft content can only be downloaded or viewed if the request comes from a logged-in WordPress user who is authorized to view the content the file is attached to. All other requests for those files will be served a <code>404 Not Found</code> HTTP status response. </p> <p><strong>Restrict access to unpublished files</strong> mode is useful if sensitive content is regularly posted and limited access to the media attached to that content is desired.</p> <ul class="wp-block-list"> <li>This mode will only apply to <a href="https://wordpress.org/support/article/using-image-and-file-attachments/#attachment-to-a-post">files uploaded directly via the post editor</a>. That creates a parent-child relationship between the post and file, which is then used to determine access and permissions. </li> <li>This mode will <em>not</em> apply to files uploaded directly to the WordPress Media Library, even if the file is later inserted into the post from the Media Library or a link to the file is copy-pasted directly into the post. </li> </ul> <div class="wp-block-tab-group-tabs layout-top"><nav><ul class="tab-labels" role="tablist" aria-label="tabbed content"><li class="tab-label active" role="tab" aria-selected="true" aria-controls="Code" tabindex="0"><label>Code</label></li><li class="tab-label" role="tab" aria-selected="false" aria-controls="VIP-CLI" tabindex="0"><label>VIP-CLI</label></li></ul></nav><section><div class="tab-content"> <div class="wp-block-tab-group-tab tab-panel" role="tabpanel" tabindex="0"> <p>To code-enable <strong>Restrict access to unpublished files</strong> mode on a WordPress single site—or for all sites on a WordPress multisite—add the code shown in the example below to a file in the <a href="https://docs.wpvip.com/wordpress-skeleton/client-mu-plugins-directory/"><code>/client-mu-plugins</code> directory</a>.</p> <div class="wp-block-a8c-docs-syntax-highlighting a8c-docs-syntax"><div class="a8c-docs-syntax__file-path"> /client-mu-plugins/example-file.php</div><pre class="line-numbers prism-large" data-start="1"><code class="lang-php">// Restrict access to unpublished files mode add_filter( 'pre_option_vip_files_acl_restrict_unpublished_enabled', function( $value ) { return 1; } );</code></pre><textarea aria-hidden="true" class="a8c-docs-syntax__copy-textarea">// Restrict access to unpublished files mode add_filter( 'pre_option_vip_files_acl_restrict_unpublished_enabled', function( $value ) { return 1; } );</textarea><button class="a8c-docs-syntax__copy-button" type="button"><span class="a8c-docs-syntax__copy-button__before">Copy</span><span class="a8c-docs-syntax__copy-button__after" aria-hidden="true">Copied</span></button></div> <p>To code-enable <strong>Restrict access to unpublished files</strong> mode per-network site on a WordPress multisite, include conditional logic to selectively enable the mode for one or more specific sites using <a href="https://developer.wordpress.org/reference/functions/get_current_blog_id/"><code>get_current_blog_id()</code></a>.</p> </div> <div class="wp-block-tab-group-tab tab-panel" role="tabpanel" tabindex="0"> <div class="a8c-docs-note-block general"> <p><strong>Note</strong></p> <p>The VIP-CLI examples below include a <code>@<app-name>.<env></code> placeholder that must be updated with the relevant <a href="https://docs.wpvip.com/target-environments-for-vip-cli/">application name and environment type</a> values before running the commands.</p> </div> <p>To enable <strong>Restrict access to unpublished files</strong> mode with <a href="https://docs.wpvip.com/vip-cli/">VIP-CLI</a>, the <code>vip_files_acl_restrict_unpublished_enabled</code> option must be added and set to a value of <code>1</code>. For example:</p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option add vip_files_acl_restrict_unpublished_enabled 1</pre> <p>Once the <code>vip_files_acl_restrict_unpublished_enabled</code> option exists, <strong>Restrict access to unpublished files</strong> mode can be disabled by updating the value to <code>0</code> and re-enabled by updating the value to <code>1</code>. For example, to disable:</p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option update vip_files_acl_restrict_unpublished_enabled 0</pre> <h4 class="wp-block-heading">Enable for a network site</h4> <p>Selectively enable <strong>Restrict access to unpublished files</strong> mode for<span style=", Arial, sans-serif"> a network site on a <a href="https://docs.wpvip.com/wordpress-multisite/">WordPress multisite</a> by running the command with the </span><code style="font-size: 18px">--url=<url></code><span style=", Arial, sans-serif"> flag and replacing </span><code style="font-size: 18px"><url></code><span style=", Arial, sans-serif"> with the site’s URL.</span></p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option add vip_files_acl_restrict_unpublished_enabled 1 --url=<url></pre> </div> </div></section></div> <h2 class="wp-block-heading">Enable “Restrict access to all files” mode</h2> <p>When <strong>Restrict access to all files</strong> mode is enabled, all files in the site can only be downloaded or viewed by logged-in WordPress <a href="https://wordpress.org/support/article/roles-and-capabilities/#read">users with capability to “read”</a> the published content on the site. All other requests for those files will be served a <code>404 Not Found</code> HTTP status response. This mode is useful for intranets and private sites.</p> <div class="wp-block-tab-group-tabs layout-top"><nav><ul class="tab-labels" role="tablist" aria-label="tabbed content"><li class="tab-label active" role="tab" aria-selected="true" aria-controls="Code" tabindex="0"><label>Code</label></li><li class="tab-label" role="tab" aria-selected="false" aria-controls="VIP-CLI" tabindex="0"><label>VIP-CLI</label></li></ul></nav><section><div class="tab-content"> <div class="wp-block-tab-group-tab tab-panel" role="tabpanel" tabindex="0"> <p>To code-enable <strong>Restrict access to all files</strong> mode on a WordPress single site—or for all sites on a WordPress multisite—add the code shown in the example below to a file in the <a href="https://docs.wpvip.com/wordpress-skeleton/client-mu-plugins-directory/"><code>/client-mu-plugins</code> directory</a>.</p> <div class="wp-block-a8c-docs-syntax-highlighting a8c-docs-syntax"><div class="a8c-docs-syntax__file-path"> /client-mu-plugins/example-file.php</div><pre class="no-line-numbers prism-large" data-start="1"><code class="lang-php">// Restrict access to all files mode add_filter( 'pre_option_vip_files_acl_restrict_all_enabled', function( $value ) { return 1; } );</code></pre><textarea aria-hidden="true" class="a8c-docs-syntax__copy-textarea">// Restrict access to all files mode add_filter( 'pre_option_vip_files_acl_restrict_all_enabled', function( $value ) { return 1; } );</textarea><button class="a8c-docs-syntax__copy-button" type="button"><span class="a8c-docs-syntax__copy-button__before">Copy</span><span class="a8c-docs-syntax__copy-button__after" aria-hidden="true">Copied</span></button></div> <p>To code-enable <strong>Restrict access to all files</strong> mode per-network site on a WordPress multisite, include conditional logic to selectively enable the mode for one or more specific sites using <a href="https://developer.wordpress.org/reference/functions/get_current_blog_id/"><code>get_current_blog_id()</code></a>.</p> </div> <div class="wp-block-tab-group-tab tab-panel" role="tabpanel" tabindex="0"> <div class="a8c-docs-note-block general"> <p><strong>Note</strong></p> <p>The VIP-CLI examples below include a <code>@<app-name>.<env></code> placeholder that must be updated with the relevant <a href="https://docs.wpvip.com/target-environments-for-vip-cli/">application name and environment type</a> values before running the commands.</p> </div> <p>To enable <strong>Restrict access to all files</strong> mode with <a href="https://docs.wpvip.com/vip-cli/">VIP-CLI</a>, the <code>vip_files_acl_restrict_all_enabled</code> option must be added and set to a value of <code>1</code>. For example:</p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option update vip_files_acl_restrict_all_enabled 1</pre> <p>Once the <code>vip_files_acl_restrict_all_enabled</code> option exists, <strong>Restrict access to all files</strong> mode can be disabled by updating the value to <code>0</code> and re-enabled by updating the value to <code>1</code>. For example, to disable:</p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option update vip_files_acl_restrict_all_enabled 0</pre> <h4 class="wp-block-heading">Enable for a network site</h4> <p>Selectively enable <strong>Restrict access to all files</strong> mode for<span style=", Arial, sans-serif"> a network site on a <a href="https://docs.wpvip.com/wordpress-multisite/">WordPress multisite</a> by running the command with the </span><code style="font-size: 18px">--url=<url></code><span style=", Arial, sans-serif"> flag and replacing </span><code style="font-size: 18px"><url></code><span style=", Arial, sans-serif"> with the site’s URL.</span></p> <pre class="wp-block-preformatted">vip @<app-name>.<env> -- wp option add vip_files_acl_restrict_all_enabled 1 --url=<url></pre> </div> </div></section></div> <h2 class="wp-block-heading">Allow access to Access-Controlled Files for specific requests</h2> <p>The <code>vip_files_acl_file_visibility</code> filter is useful for mobile applications or plugins that require access to Access-Controlled Files.</p> <p>The <code>vip_files_acl_file_visibility</code> filter validates if a request for an Access-controlled file is legitimate. The filter accepts the parameters <code>$file_visibility</code> and <code>$file_path</code>, and returns one of the filter value constants (i.e., <code>Automattic\VIP\Files\Acl\FILE_IS_PUBLIC</code> , <code>Automattic\VIP\Files\Acl\FILE_IS_PRIVATE_AND_ALLOWED</code> , and <code>Automattic\VIP\Files\Acl\FILE_IS_PRIVATE_AND_DENIED</code>) to indicate what level of access to a file can be granted for a request.</p> <p>Requests for Access-Controlled Files can be sent with HTTP Authorization header <code>X-Original-Authorization</code> and User Agent <code>X-Original-User-Agent</code>. One or both of these headers can be included in a <code>vip_files_acl_file_visibility</code> filter for additional validation of a request. </p> <p>The HTTP Authorization <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization">header can be sent with credentials for authenticating a request</a>. If the token value assigned to the Authorization header in a request can be matched and validated by the environment receiving the request, the request is identified as legitimate. A matching value on the receiving environment can be stored as an <a href="https://docs.wpvip.com/manage-environment-variables/">environment variable</a>.</p> <p>In this code example, requests from a mobile application are granted access to Access-Controlled Files if the token passed by <code>X-Original-Authorization</code> matches the environment variable <code>APP_FILE_ACCESS_TOKEN</code>, and the filter value constant returned is <code>FILE_IS_PRIVATE_AND_ALLOWED</code>:</p> <div class="wp-block-a8c-docs-syntax-highlighting a8c-docs-syntax"><pre class="line-numbers prism-large" data-start="1"><code class="lang-php">/** * Allow mobile app requests to have access to Access-Controlled Files */ function vip_check_file_visibility_for_mobile_request( $file_visibility, $file_path ) { /** * Allow mobile requests with a token */ $token_header = isset( $_SERVER['HTTP_X_ORIGINAL_AUTHORIZATION'] ) ? sanitize_text_field( $_SERVER['HTTP_X_ORIGINAL_AUTHORIZATION'] ) : false; // Get token from environment variable. $token = vip_get_env_var( 'APP_FILE_ACCESS_TOKEN', '' ); if ( $token === $token_header ) { return Automattic\VIP\Files\Acl\FILE_IS_PRIVATE_AND_ALLOWED; } return $file_visibility; } add_filter( 'vip_files_acl_file_visibility', 'vip_check_file_visibility_for_mobile_request', 11, 2 );</code></pre><textarea aria-hidden="true" class="a8c-docs-syntax__copy-textarea">/** * Allow mobile app requests to have access to Access-Controlled Files */ function vip_check_file_visibility_for_mobile_request( $file_visibility, $file_path ) { /** * Allow mobile requests with a token */ $token_header = isset( $_SERVER['HTTP_X_ORIGINAL_AUTHORIZATION'] ) ? sanitize_text_field( $_SERVER['HTTP_X_ORIGINAL_AUTHORIZATION'] ) : false; // Get token from environment variable. $token = vip_get_env_var( 'APP_FILE_ACCESS_TOKEN', '' ); if ( $token === $token_header ) { return Automattic\VIP\Files\Acl\FILE_IS_PRIVATE_AND_ALLOWED; } return $file_visibility; } add_filter( 'vip_files_acl_file_visibility', 'vip_check_file_visibility_for_mobile_request', 11, 2 );</textarea><button class="a8c-docs-syntax__copy-button" type="button"><span class="a8c-docs-syntax__copy-button__before">Copy</span><span class="a8c-docs-syntax__copy-button__after" aria-hidden="true">Copied</span></button></div> </div> <!-- .a8c-docs-entry-content --> <p class='a8c-docs-last-updated-text'>Last updated: November 14, 2024</p> </article> <!-- .a8c-docs-entry --> </main> <footer class="a8c-docs-layout__main__content__footer"> <hr /> <h2 class="has-text-align-center screen-reader-text"> Contact WordPress VIP </h2> <p class="has-text-align-center a8c-docs-layout__main__content__footer__header"> Have a question, or ready to get started with WordPress VIP? </p> <div class="a8c-docs-button-group__wrapper"> <ul class="a8c-docs-button-group"> <li> <a class="a8c-docs-button" target="_blank" href="https://wordpressvip.zendesk.com/">Contact Support</a> </li> <li> <a class="a8c-docs-button is-style-secondary" target="_blank" href="https://wpvip.com/contact/">Contact Sales</a> </li> </ul> </div> <p class="has-text-align-center"> <statusiq-status-widget src="https://wpvipstatus.com" widget-type="badge" widget-text="WPVIP"></statusiq-status-widget> </p> <hr /> <p class="has-text-align-center a8c-docs-gutter-bottom-none font-small"> Documentation is licensed under a </p> <p class="has-text-align-center font-small"> <a href="https://creativecommons.org/licenses/by-sa/4.0/"> Creative Commons Attribution-ShareAlike 4.0 International License </a> </p> <div class="a8c-docs-automattic-block"> <p> <a href="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> Creation </a> </p> </div> <!-- .a8c-docs-automattic-block --> </footer> <!-- .a8c-docs-layout__main__content__footer --> </div> <!-- .a8c-docs-layout__main__content__primary --> <div class="a8c-docs-layout__main__content__secondary"> <div class="a8c-docs-environment-list"><h2 class="a8c-docs-environment-list__heading">Relevant to</h2><ul class="a8c-docs-environment-list__list"><li class="a8c-docs-environment-list__item">WordPress</li></ul></div> <nav id="docs-toc-nav" class="a8c-docs-table-of-contents__sticky" aria-label="Table of Contents"> </nav> </div> <!-- .a8c-docs-layout__main__content__secondary --> </div> <!-- .a8c-docs-layout__main__content__inner --> </div> <!-- .a8c-docs-layout__main__content --> </div> <!-- .a8c-docs-layout__main__inner --> </div> <!-- .a8c-docs-layout__main --> </div> <!-- .a8c-docs-layout --> <!-- A8C RUM --> <script defer id="bilmur" data-provider="vip" data-service="k8s-a8c" src="https://s0.wp.com/wp-content/js/bilmur.min.js?m=202448"></script> <div id="privacy-consent-banner" style="display: none;"> <div class="cookie-banner"> <div class="cookie-banner__simple-options"> <p class="cookie-banner__simple-text-description"> As an open source company, we take your privacy seriously and want to be as transparent as possible. So: We use cookies to collect some personal data from you (like your browsing data, IP addresses, and other unique identifiers). Some of these cookies we absolutely need in order to make things work, and others you can choose in order to optimize your experience while using our site and services. </p> <div class="cookie-banner__button-container"> <button class="cookie-banner__customize-button">Customize</button> <button class="cookie-banner__accept-all-button">Accept all</button> </div> </div> <div class="cookie-banner__options-selection" style="display: none;"> <p class="cookie-banner__options-lead-text"> As an open source company, we take your privacy seriously and want to be as transparent as possible. So: We use cookies to collect some personal data from you (like your browsing data, IP addresses, and other unique identifiers). Some of these cookies we absolutely need in order to make things work, and others you can choose in order to optimize your experience while using our site and services. </p> <div class="cookie-banner__bucket-container"> <input class="cookie-banner__checkbox" type="checkbox" checked disabled> <div class="cookie-banner__option-description"> <strong>Required</strong> <p>These cookies are essential for our websites and services to perform basic functions and are necessary for us to operate certain features, like allowing registered users to authenticate and perform account-related functions, storing preferences set by users (like account name, language, and location), and ensuring our services operate properly. </p> </div> </div> <div class="cookie-banner__bucket-container"> <input id="analytics-bucket-toggle" class="cookie-banner__checkbox" type="checkbox" checked> <div class="cookie-banner__option-description"> <strong>Analytics</strong> <p>These cookies allow us to optimize performance by collecting information on how users interact with our websites.</p> </div> </div> <div class="cookie-banner__bucket-container"> <input id="advertising-bucket-toggle" class="cookie-banner__checkbox" type="checkbox" checked> <div class="cookie-banner__option-description"> <strong>Advertising</strong> <p>We and our advertising partners set these cookies to provide you with relevant content and to understand that content’s effectiveness.</p> </div> </div> <button class="cookie-banner__accept-selection-button">Accept selection</button> </div> </div> </div><script type="text/javascript" src="https://docs.wpvip.com/wp-content/plugins/vip-privacy-toolset/assets/privacy-consent-banner.js?ver=1.0.0" id="privacy-toolset-js-js" defer="defer" data-wp-strategy="defer"></script> <script type="text/javascript" src="https://docs.wpvip.com/wp-content/themes/a8c-docs/assets/build/main.js?m=1732566038g" ></script><script type="text/javascript" src="https://stats.wp.com/e-202448.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"182304402\",\"post\":\"3169\",\"tz\":\"0\",\"srv\":\"docs.wpvip.com\",\"hp\":\"vip\",\"j\":\"1:14.0\"}") ]); _stq.push([ "clickTrackerInit", "182304402", "3169" ]); /* ]]> */ </script> <script type="text/javascript" src="https://docs.wpvip.com/wp-content/plugins/tab-group-block/assets/frontend.js?m=1730418100g" ></script> </body> </html>