1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <title>Andy Stratton is a PHP & WordPress Developer</title> 6<link data-rocket-prefetch href="https://ssl.google-analytics.com" rel="dns-prefetch"><link rel="preload" data-rocket-preload as="image" href="https://theandystratton.com/wp-content/themes/theandystratton/images/bg_level1.png" fetchpriority="high"> 7 <link data-minify="1" rel="stylesheet" type="text/css" href="https://theandystratton.com/wp-content/cache/min/1/wp-content/themes/theandystratton/style.css?ver=1782332982" /> 8 <!--[if IE 6]> 9 <link rel="stylesheet" type="text/css" href="https://theandystratton.com/wp-content/themes/theandystratton/style.ie6.css" /> 10 <![endif]--> 11 12 13 14 15 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 16 17 <!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ --> 18 <meta name="description" content="The portfolio and blog of Andy Stratton. Front-end and PHP/WordPress developer in the Annapolis-Baltimore area." /> 19 <link rel="canonical" href="https://theandystratton.com/" /> 20 <meta property="og:locale" content="en_US" /> 21 <meta property="og:type" content="website" /> 22 <meta property="og:title" content="Andy Stratton is a PHP & WordPress Developer" /> 23 <meta property="og:description" content="The portfolio and blog of Andy Stratton. Front-end and PHP/WordPress developer in the Annapolis-Baltimore area." /> 24 <meta property="og:url" content="https://theandystratton.com/" /> 25 <meta property="og:site_name" content="ANDY STRATTON" /> 26 <meta property="article:modified_time" content="2010-07-02T01:27:07+00:00" /> 27 <meta name="twitter:card" content="summary_large_image" /> 28
28<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/theandystratton.com\/","url":"https:\/\/theandystratton.com\/","name":"Andy Stratton is a PHP & WordPress Developer","isPartOf":{"@id":"https:\/\/theandystratton.com\/#website"},"datePublished":"2009-06-03T03:27:06+00:00","dateModified":"2010-07-02T01:27:07+00:00","description":"The portfolio and blog of Andy Stratton. Front-end and PHP\/WordPress developer in the Annapolis-Baltimore area.","breadcrumb":{"@id":"https:\/\/theandystratton.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/theandystratton.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/theandystratton.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/theandystratton.com\/#website","url":"https:\/\/theandystratton.com\/","name":"ANDY STRATTON","description":"WordPress and PHP Developer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/theandystratton.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
28 29 <!-- / Yoast SEO plugin. --> 30 31 32 33<link rel="alternate" type="application/rss+xml" title="ANDY STRATTON » Home Comments Feed" href="https://theandystratton.com/home/feed" /> 34<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://theandystratton.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Ftheandystratton.com%2F" /> 35<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://theandystratton.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Ftheandystratton.com%2F&format=xml" /> 36<style id="wp-img-auto-sizes-contain-inline-css"> 37img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 38/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 39</style> 40<style id="wp-emoji-styles-inline-css"> 41 42 img.wp-smiley, img.emoji { 43 display: inline !important; 44 border: none !important; 45 box-shadow: none !important; 46 height: 1em !important; 47 width: 1em !important; 48 margin: 0 0.07em !important; 49 vertical-align: -0.1em !important; 50 background: none !important; 51 padding: 0 !important; 52 } 53/*# sourceURL=wp-emoji-styles-inline-css */ 54</style> 55<style id="wp-block-library-inline-css"> 56:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
56--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 57 58/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 59</style> 60<style id="classic-theme-styles-inline-css"> 61/*! This file is auto-generated */ 62.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} 63/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 64</style> 65 66<style id="global-styles-inline-css"> 67: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,rgb(6,147,227) 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,rgb(252,185,
670) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }: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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.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;}
67.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;} 68/*# sourceURL=global-styles-inline-css */ 69</style> 70 71<link rel="https://api.w.org/" href="https://theandystratton.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://theandystratton.com/wp-json/wp/v2/pages/2" /><link rel='shortlink' href='https://theandystratton.com/' /> 72 73 74<style type="text/css"> 75#hosting-callout { margin: 2em 0 0; background: #fff; color: #333; background: rgba(255,255,255,.8); padding: 1em; border: 1px solid; border-radius: 1em; text-align: center; } 76#hosting-callout h3 { margin: 0; } 77#hosting-callout .button { margin: 1em 0 0; display: block; background: #fff; border-radius: .5em; border-bottom: 1px solid #ccc; padding: .5em; text-decoration: none; background: #080; background: rgba(0,88,0,.8); color: #fff; font-size: 1.25em; font-weight: bold; } 78#hosting-callout .close { cursor: pointer; display: block; margin-top: 1em;} 79</style> 80 81<noscript><style id="rocket-lazyload-nojs-css">.rll-youtube-player, [data-lazy-src]{display:none !important;}</style></noscript> 82 83<meta name="generator" content="WP Rocket 3.23.4" data-wpr-features="wpr_minify_concatenate_js wpr_lazyload_images wpr_lazyload_iframes wpr_preconnect_external_domains wpr_oci wpr_minify_css wpr_cdn wpr_preload_links wpr_desktop" /></head> 84<body id="home"> 85 86<div id="page"> 87 <div id="container"> 88 89 <div id="header"> 90 <div class="wrap">
91 <span class="logo"> 92 <a href="https://theandystratton.com">the ANDY STRATTON</a> 93 </span> 94 95 <ul> 96 <li class="home"><a class="active" href="https://theandystratton.com">Home</a></li> 97 <li><a class="" href="https://theandystratton.com/about">About</a></li> 98 <li><a class="" href="https://theandystratton.com/portfolio">Portfolio</a></li> 99 <li><a class="" href="https://theandystratton.com/blog">Blog</a></li> 100 <li><a class="" href="https://theandystratton.com/archives">Archives</a></li> 101 <li><a class="" href="https://theandystratton.com/plugins">Plugins</a></li> 102 <li><a class="" href="https://theandystratton.com/contact">Contact & Hire</a></li> 103 </ul> 104 105 <div id="quick_quote"> 106 <a href="https://theandystratton.com/contact?quote">Get a QUICK QUOTE »</a> 107 </div> 108 </div> 109 </div> 110 111 <div id="body"> 112 113 114 <h1>I build <a href="https://theandystratton.com/portfolio">websites by hand</a>.</h1> 115 116 <h2 class="tools">…with WordPress, PHP, XHTML, CSS, Javascript/jQuery.</h2> 117 118 <div class="notes"> 119 <p class="notes">Learn a little more <a href="/about">about me</a>.<br /> 120See <a href="/portfolio">my work</a>.<br /> 121Read <a href="/blog">things I write</a>.<br /> 122<a href="/contact">Contact</a> or <a href="/contact/?quote">hire me</a>.</p> 123 </div> 124 125 <div class="latest"> 126 <h2>What's been on my mind…</h2> 127 <a class="title" href="https://theandystratton.com/2017/converting-headspace-yoast-wordpress-seo"> 128 Converting from HeadSpace to Yoast (WordPress) SEO </a> 129 <span class="date"> 130 Posted in <a href="https://theandystratton.com/category/development" rel="category tag">Development</a>, <a href="https://theandystratton.com/category/wordpress" rel="category tag">Wordpress</a> on March 10, 2017 </span> 131 <br /> 132 <a class="title" href="https://theandystratton.com/2016/images-broken-in-chrome-wordpress-upgrade"> 133 Images Broken in Chrome After WordPress 4.4.2 Upgrade </a> 134 <span class="date"> 135 Posted in <a href="https://theandystratton.com/category/development" rel="category tag">Development</a>, <a href="https://theandystratton.com/category/wordpress" rel="category tag">Wordpress</a> on February 19, 2016 </span> 136 <br /> 137 <a class="title" href="https://theandystratton.com/2015/woocommerce-bug-group-products-show-on-sale"> 138 WooCommerce Bug: Group Products Show “On Sale” </a> 139 <span class="date"> 140 Posted in <a href="https://theandystratton.com/category/development" rel="category tag">Development</a> on October 22, 2015 </span> 141 <br /> 142 </div> 143 144 145 </div> 146 147 <div class="clear"></div> 148 149 </div> 150</div> 151 152<div id="footer"> 153 <a href="https://theandystratton.com/about">About</a> | 154 <a href="https://theandystratton.com/portfolio">Portfolio</a> | 155 <a href="/blog">Blog</a> | 156 <a href="https://theandystratton.com/contact">Contact Me</a> | 157 <a href="https://theandystratton.com/contact?quote">Get a Quote</a> 158 <br /> 159 Andy Stratton built this site by hand using XHTML, CSS, and Javascript/jQuery and WordPress. 160</div> 161
162<script type="text/javascript"> 163var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 164document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 165</script>
165 166 167
168<script type="speculationrules"> 169{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/theandystratton/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 170</script>
170 171
172<script id="syntaxhighlighter-core-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 172
172
173<script id="syntaxhighlighter-brush-as3-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 173
173
174<script id="syntaxhighlighter-brush-arduino-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 174
174
175<script id="syntaxhighlighter-brush-bash-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 175
175
176<script id="syntaxhighlighter-brush-coldfusion-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b"></script>
176 177
178<script id="syntaxhighlighter-brush-cpp-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 178
178
179<script id="syntaxhighlighter-brush-csharp-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 179
179
180<script id="syntaxhighlighter-brush-css-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 180
180
181<script id="syntaxhighlighter-brush-delphi-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 181
181
182<script id="syntaxhighlighter-brush-diff-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 182
182
183<script id="syntaxhighlighter-brush-erlang-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b"></script>
183 184
185<script id="syntaxhighlighter-brush-go-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGo.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 185
185
186<script id="syntaxhighlighter-brush-groovy-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 186
186
187<script id="syntaxhighlighter-brush-haskell-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushHaskell.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 187
187
188<script id="syntaxhighlighter-brush-java-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 188
188
189<script id="syntaxhighlighter-brush-javafx-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 189
189
190<script id="syntaxhighlighter-brush-jscript-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b"></script>
190 191 192 193
194<script id="syntaxhighlighter-brush-perl-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 194
194
195<script id="syntaxhighlighter-brush-php-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 195
195
196<script id="syntaxhighlighter-brush-plain-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 196
196
197<script id="syntaxhighlighter-brush-powershell-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 197
197
198<script id="syntaxhighlighter-brush-python-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b"></script>
198 199
200<script id="syntaxhighlighter-brush-ruby-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 200
200
201<script id="syntaxhighlighter-brush-scala-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 201
201
202<script id="syntaxhighlighter-brush-sql-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 202
202
203<script id="syntaxhighlighter-brush-swift-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSwift.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 203
203
204<script id="syntaxhighlighter-brush-vb-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 204
204
205<script id="syntaxhighlighter-brush-xml-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 205
205
206<script id="syntaxhighlighter-brush-yaml-js" src="https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 206
206
207<script type='text/javascript'> 208 (function(){ 209 var corecss = document.createElement('link'); 210 var themecss = document.createElement('link'); 211 var corecssurl = "https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; 212 if ( corecss.setAttribute ) { 213 corecss.setAttribute( "rel", "stylesheet" ); 214 corecss.setAttribute( "type", "text/css" ); 215 corecss.setAttribute( "href", corecssurl ); 216 } else { 217 corecss.rel = "stylesheet"; 218 corecss.href = corecssurl; 219 } 220 document.head.appendChild( corecss ); 221 var themecssurl = "https://theandystratton.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b"; 222 if ( themecss.setAttribute ) { 223 themecss.setAttribute( "rel", "stylesheet" ); 224 themecss.setAttribute( "type", "text/css" ); 225 themecss.setAttribute( "href", themecssurl ); 226 } else { 227 themecss.rel = "stylesheet"; 228 themecss.href = themecssurl; 229 } 230 document.head.appendChild( themecss ); 231 })(); 232 SyntaxHighlighter.config.strings.expandSource = '+ expand source'; 233 SyntaxHighlighter.config.strings.help = '?'; 234 SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; 235 SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; 236 SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; 237 SyntaxHighlighter.defaults['auto-links'] = false; 238 SyntaxHighlighter.defaults['pad-line-numbers'] = false; 239 SyntaxHighlighter.all(); 240 241 // Infinite scroll support 242 if ( typeof( jQuery ) !== 'undefined' ) { 243 jQuery( function( $ ) { 244 $( document.body ).on( 'post-load', function() { 245 SyntaxHighlighter.highlight(); 246 } ); 247 } ); 248 } 249</script>
vendor: 1 bytes, line 249
249
250<script id="rocket-browser-checker-js-after"> 251"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); 252//# sourceURL=rocket-browser-checker-js-after 253</script>
vendor: 1 bytes, line 253
253
254<script id="rocket-preload-links-js-extra"> 255var RocketPreloadLinksConfig = {"excludeUris":"/(?:.+/)?feed(?:/(?:.+/?)?)?$|/(?:.+/)?embed/|/(index.php/)?(.*)wp-json(/.*|$)|/refer/|/go/|/recommend/|/recommends/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https://theandystratton.com","onHoverDelay":"100","rateThrottle":"3"}; 256//# sourceURL=rocket-preload-links-js-extra 257</script>
vendor: 1 bytes, line 257
257
258<script id="rocket-preload-links-js-after"> 259(function() { 260"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); 261}()); 262 263//# sourceURL=rocket-preload-links-js-after 264</script>
vendor: 1 bytes, line 264
264
265<script>window.lazyLoadOptions=[{elements_selector:"img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}},{elements_selector:".rocket-lazyload",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,}];window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue} 266if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue} 267images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1} 268if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script>
268<script data-no-minify="1" async src="https://theandystratton.com/wp-content/plugins/wp-rocket/assets/js/lazyload/17.8.3/lazyload.min.js"></script>
vendor: 1 bytes, line 268
268
269<script src="https://theandystratton.com/wp-content/cache/min/1/8310f2db690ff8eb329ccaf157bdb4ee.js" data-minify="1"></script>
269<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a441bcc1a9fe2220',t:'MTc5MDkyMzQ1Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
269</body> 270</html> 271<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.