CINXE.COM
Make Cool Shit - 403 Page Labs
<!DOCTYPE html> <html lang="en-US" > <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- WP_HEAD() START --> <!-- Manifest added by SuperPWA - Progressive Web Apps Plugin For WordPress --> <link rel="manifest" href="/superpwa-manifest.json"> <meta name="theme-color" content="#ee076e"> <!-- / SuperPWA.com --> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO Premium plugin v17.1 (Yoast SEO v23.3) - https://yoast.com/wordpress/plugins/seo/ --> <title>Make Cool Shit - 403 Page Labs</title> <meta name="description" content="We know SEO. The fastest, most secure enterprise-grade WordPress sites on earth, purpose built for your business. Get found." /> <link rel="canonical" href="https://403.ie/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Make Cool Shit" /> <meta property="og:description" content="Working with some of the largest, most complex and unique WordPress configurations in the world - 403 Page Labs is committed to continually sharing the lessons we learned." /> <meta property="og:url" content="https://403.ie/" /> <meta property="og:site_name" content="403 Page Labs" /> <meta property="article:modified_time" content="2021-11-12T14:55:35+00:00" /> <meta property="og:image" content="https://403.ie/wp-content/uploads/2021/10/cropped-New-Project-1-2.png" /> <meta property="og:image:width" content="512" /> <meta property="og:image:height" content="512" /> <meta property="og:image:type" content="image/png" /> <meta name="twitter:card" content="summary_large_image" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://403.ie/","url":"https://403.ie/","name":"Make Cool Shit - 403 Page Labs","isPartOf":{"@id":"https://403.ie/#website"},"about":{"@id":"https://403.ie/#organization"},"datePublished":"2017-10-26T12:29:05+00:00","dateModified":"2021-11-12T14:55:35+00:00","description":"We know SEO. The fastest, most secure enterprise-grade WordPress sites on earth, purpose built for your business. Get found.","breadcrumb":{"@id":"https://403.ie/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://403.ie/"]}]},{"@type":"BreadcrumbList","@id":"https://403.ie/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://403.ie/#website","url":"https://403.ie/","name":"403 Page Labs","description":"Next-gen WordPress based in Ireland","publisher":{"@id":"https://403.ie/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://403.ie/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Organization","Place","ProfessionalService"],"@id":"https://403.ie/#organization","name":"403 Page Labs","url":"https://403.ie/","logo":{"@id":"https://403.ie/#local-main-organization-logo"},"image":{"@id":"https://403.ie/#local-main-organization-logo"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"opens":"00:00","closes":"23:59"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Sunday"],"opens":"09:00","closes":"17:00"}],"email":"labs@403page.com","areaServed":"Ireland"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://403.ie/#local-main-organization-logo","url":"https://403.ie/wp-content/uploads/2021/10/New-Project-1-svg.svg","contentUrl":"https://403.ie/wp-content/uploads/2021/10/New-Project-1-svg.svg","width":675,"height":449,"caption":"403 Page Labs"}]}</script> <meta name="geo.placename" content="Limerick" /> <meta name="geo.region" content="Republic of Ireland" /> <!-- / Yoast SEO Premium plugin. --> <link id="ma-customfonts" href="//403.ie/wp-content/uploads/fonts/ma_customfonts.css?ver=91db782c" rel="stylesheet" type="text/css" /><link rel='stylesheet' id='wp-block-library-css' href='https://403.ie/wp-includes/css/dist/block-library/style.min.css?ver=6.6.2' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css' type='text/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' type='text/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='oxygen-css' href='https://403.ie/wp-content/mu-plugins/oxygen/component-framework/oxygen.css?ver=4.0.3' type='text/css' media='all' /> <script type="text/javascript" src="https://403.ie/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <link rel="https://api.w.org/" href="https://403.ie/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://403.ie/wp-json/wp/v2/pages/30" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://403.ie/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.6.2" /> <link rel='shortlink' href='https://403.ie/' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://403.ie/wp-json/oembed/1.0/embed?url=https%3A%2F%2F403.ie%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://403.ie/wp-json/oembed/1.0/embed?url=https%3A%2F%2F403.ie%2F&format=xml" /> <!-- Stream WordPress user activity plugin v4.0.1 --> <link rel='stylesheet' id='oxygen-cache-20-css' href='//403.ie/wp-content/uploads/oxygen/css/20.css?cache=1654791436&ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='oxygen-cache-30-css' href='//403.ie/wp-content/uploads/oxygen/css/30.css?cache=1657061604&ver=6.6.2' type='text/css' media='all' /> <link rel='stylesheet' id='oxygen-universal-styles-css' href='//403.ie/wp-content/uploads/oxygen/css/universal.css?cache=1704911731&ver=6.6.2' type='text/css' media='all' /> <!-- END OF WP_HEAD() --> </head> <body class="home page-template-default page page-id-30 wp-embed-responsive oxygen-body" > <div id="div_block-47-42" class="ct-div-block" ><div id="div_block-52-42" class="ct-div-block" ><header id="_header-104-20" class="oxy-header-wrapper oxy-header" ><div id="_header_row-105-20" class="oxy-header-row" ><div class="oxy-header-container"><div id="_header_left-106-20" class="oxy-header-left" ><a id="link-107-20" class="ct-link finance-logo" href="/" target="_self" ><img id="image-36-42" alt="403 Labs" src="https://403.ie/wp-content/uploads/2021/10/New-Project-1-svg.svg" class="ct-image"/></a></div><div id="_header_center-109-20" class="oxy-header-center" ><nav id="_nav_menu-41-42" class="oxy-nav-menu" ><div class='oxy-menu-toggle'><div class='oxy-nav-menu-hamburger-wrap'><div class='oxy-nav-menu-hamburger'><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div><div class='oxy-nav-menu-hamburger-line'></div></div></div></div><div class="menu-navigation-container"><ul id="menu-navigation" class="oxy-nav-menu-list"><li id="menu-item-4947" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4947"><a href="https://403.ie/category/how-to/">How To...</a></li> <li id="menu-item-4948" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4948"><a href="https://403.ie/category/performance/">Performance</a></li> <li id="menu-item-4949" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4949"><a href="https://403.ie/category/security/">Security</a></li> <li id="menu-item-4950" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4950"><a href="https://403.ie/category/seo/">SEO</a></li> <li id="menu-item-4951" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-4951"><a href="https://403.ie/category/cloudflare-workers/">Workers</a></li> </ul></div></nav></div><div id="_header_right-110-20" class="oxy-header-right" ><div id="div_block-112-20" class="ct-div-block" ><div id="code_block-113-20" class="ct-code-block" ></div><div id="fancy_icon-115-20" class="ct-fancy-icon" onClick="focusSearch()"><svg id="svg-fancy_icon-115-20"><use xlink:href="#FontAwesomeicon-search"></use></svg></div></div> <div tabindex="-1" class="oxy-modal-backdrop top " style="background-color: rgba(0,0,0,0.3);" data-trigger="user_clicks_element" data-trigger-selector="#fancy_icon-115-20" data-trigger-time="5" data-trigger-time-unit="seconds" data-close-automatically="no" data-close-after-time="10" data-close-after-time-unit="seconds" data-trigger_scroll_amount="50" data-trigger_scroll_direction="down" data-scroll_to_selector="" data-time_inactive="60" data-time-inactive-unit="seconds" data-number_of_clicks="3" data-close_on_esc="on" data-number_of_page_views="3" data-close-after-form-submit="no" data-open-again="always_show" data-open-again-after-days="3" > <div id="modal-116-20" class="ct-modal" data-aos="fade-down" data-aos-duration="200"><div id="div_block-117-20" class="ct-div-block" > <div id="_search_form-118-20" class="oxy-search-form" > <form role="search" method="get" id="searchform" class="searchform" action="https://403.ie/"> <div> <label class="screen-reader-text" for="s">Search for:</label> <input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Search" /> </div> </form> </div> <div id="code_block-120-20" class="ct-code-block" ></div><div id="fancy_icon-121-20" class="ct-fancy-icon oxy-close-modal" ><svg id="svg-fancy_icon-121-20"><use xlink:href="#FontAwesomeicon-close"></use></svg></div></div></div> </div> </div></div></div></header> <div id='inner_content-24-42' class='ct-inner-content'><section id="hero" class=" ct-section " ><div class="ct-section-inner-wrap"><div id="div_block-980-30" class="ct-div-block" ><h1 id="headline-797-30" class="ct-headline">MAKETH<br>COOL<br>SHIT<br></h1><h1 id="headline-989-30" class="ct-headline">OFTEN</h1><div id="code_block-587-4" class="ct-code-block" ><!-- --!></div></div></div></section><section id="speakers" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-7-4" class="ct-div-block" ><h2 id="headline-3-4" class="ct-headline" data-aos="slide-right" data-aos-duration="500" data-aos-once="true">IN<br></h2><h2 id="headline-16-4" class="ct-headline" data-aos="slide-right" data-aos-duration="650" data-aos-once="true">SIGHT<br></h2></div><div id="text_block-8-4" class="ct-text-block Subheading" >The strength of Open Source is in shared challenges. Working with some of the largest, most complex and unique WordPress configurations in the world - 403 Page Labs is committed to continually sharing the lessons we learned. <br><br>The greatest thing about WordPress is it allows anyone to build a website. Conversely, the worst thing about WordPress is it allows anyone to build a website. The question is not "Should I use WordPress", but rather "Who should build my WordPress site"?</div><div id="new_columns-723-4" class="ct-new-columns" ><div id="div_block-724-4" class="ct-div-block" ><div id="new_columns-730-4" class="ct-new-columns conference-speakers-3-wrapper" ><div id="div_block-732-4" class="ct-div-block" ></div><div id="div_block-733-4" class="ct-div-block conference-speaker-3-text-column" ><h3 id="headline-30-4" class="ct-headline SpeakerHeading">SPEED</h3><div id="text_block-32-4" class="ct-text-block SmallParagraph" >Core web vitals, Lighthouse, Google Pagespeed and more...</div><a id="link_text-36-4" class="ct-link-text OutlineButton" href="/category/performance/" target="_self" >Learn About Performance</a></div></div></div><div id="div_block-725-4" class="ct-div-block" ><div id="new_columns-737-4" class="ct-new-columns conference-speakers-3-wrapper" ><div id="div_block-738-4" class="ct-div-block" ></div><div id="div_block-739-4" class="ct-div-block conference-speaker-3-text-column" ><h3 id="headline-51-4" class="ct-headline SpeakerHeading">SEcurity</h3><div id="text_block-52-4" class="ct-text-block SmallParagraph" >Everything is hackable, but we don't need to make it too easy...</div><a id="link_text-742-4" class="ct-link-text OutlineButton" href="/category/security/" target="_self" >Learn About Security</a></div></div></div><div id="div_block-726-4" class="ct-div-block" ><div id="new_columns-746-4" class="ct-new-columns conference-speakers-3-wrapper" ><div id="div_block-747-4" class="ct-div-block" ></div><div id="div_block-748-4" class="ct-div-block conference-speaker-3-text-column" ><h3 id="headline-57-4" class="ct-headline SpeakerHeading">SEO</h3><div id="text_block-58-4" class="ct-text-block SmallParagraph" >Search Engine Optimisation and visibility...</div><a id="link_text-751-4" class="ct-link-text OutlineButton" href="/category/seo/" target="_self" >Learn About <br>SEO</a></div></div></div></div><div id="new_columns-764-4" class="ct-new-columns" ><div id="div_block-765-4" class="ct-div-block" ><div id="new_columns-755-4" class="ct-new-columns conference-speakers-3-wrapper" ><div id="div_block-756-4" class="ct-div-block" ></div><div id="div_block-757-4" class="ct-div-block conference-speaker-3-text-column" ><h3 id="headline-68-4" class="ct-headline SpeakerHeading">Cloudflare Workers</h3><div id="text_block-69-4" class="ct-text-block SmallParagraph" >Do really cool stuff with tiny apps on Cloudflare's edge. <br>Try ours out...</div><a id="link_text-760-4" class="ct-link-text OutlineButton" href="/category/cloudflare-workers/" target="_self" >Learn About Cloudflare Workers</a></div></div></div><div id="div_block-766-4" class="ct-div-block" ><a id="link-665-4" class="ct-link" href="/articles/" target="_self" ><img id="image-109-4" alt="" src="https://403.ie/wp-content/uploads/2021/10/014-eye.svg" class="ct-image"/><h3 id="headline-107-4" class="ct-headline BecomeSpeaker">MORE<br>CLEVER STUFF</h3></a></div></div></div></section><section id="tickets" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-118-4" class="ct-div-block" ><h2 id="headline-666-4" class="ct-headline conference-heading-two">Ad-hoc Hourly Rates</h2><div id="text_block-981-30" class="ct-text-block" >Custom rates available for recurring monthly retainers and certain charities/start-ups</div></div><div id="new_columns-719-4" class="ct-new-columns" ><div id="div_block-720-4" class="ct-div-block" data-aos="fade-left" data-aos-duration="250" data-aos-once="true"><div id="div_block-125-4" class="ct-div-block General" ><div id="text_block-138-4" class="ct-text-block Price" >€139</div><div id="div_block-151-4" class="ct-div-block PriceText" ><h3 id="headline-160-4" class="ct-headline SpeakerHeading PackName">1 HOUR</h3><a id="link_button-669-4" class="ct-link-button conference-white-outline-button" href="/#section-947-30" target="_self" >Get this</a></div></div></div><div id="div_block-721-4" class="ct-div-block" data-aos="fade-left" data-aos-duration="500" data-aos-once="true"><div id="div_block-127-4" class="ct-div-block Standart" ><div id="text_block-132-4" class="ct-text-block Price" >€119</div><div id="div_block-164-4" class="ct-div-block PriceText" ><h3 id="headline-166-4" class="ct-headline SpeakerHeading PackName">4 HOURS</h3><a id="link_button-671-4" class="ct-link-button conference-white-outline-button" href="/#section-947-30" target="_self" >Get This</a></div></div></div><div id="div_block-722-4" class="ct-div-block" data-aos="fade-left" data-aos-duration="750" data-aos-once="true"><div id="div_block-129-4" class="ct-div-block Business" ><div id="text_block-134-4" class="ct-text-block Price" >€99</div><div id="div_block-172-4" class="ct-div-block PriceText" ><h3 id="headline-174-4" class="ct-headline SpeakerHeading PackName">9+ HOURS</h3><a id="link_button-673-4" class="ct-link-button conference-white-outline-button" href="/#section-947-30" target="_self" >Get This</a></div></div></div></div></div></section><section id="section-947-30" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="text_block-948-30" class="ct-text-block conference-subheading" >Contact the labs</div><a id="link-982-30" class="ct-link" href="https://403ie.youcanbook.me/" target="_self" ><div id="div_block-951-30" class="ct-div-block" ><div id="fancy_icon-952-30" class="ct-fancy-icon" ><svg id="svg-fancy_icon-952-30"><use xlink:href="#FontAwesomeicon-phone-square"></use></svg></div><h3 id="headline-953-30" class="ct-headline">Book a call</h3><div id="text_block-954-30" class="ct-text-block" ></div></div></a><div id="new_columns-955-30" class="ct-new-columns" ><div id="div_block-965-30" class="ct-div-block conference-contact-3-column" ><div id="fancy_icon-966-30" class="ct-fancy-icon conference-contact-3-icon" ><svg id="svg-fancy_icon-966-30"><use xlink:href="#Lineariconsicon-envelope"></use></svg></div><h1 id="headline-967-30" class="ct-headline conference-contact-3-title">E-mail</h1><a id="link_text-969-30" class="ct-link-text conference-contact-3-link" href="/cdn-cgi/l/email-protection#9af6fbf8e9daaeaaa9eafbfdffb4f9f5f7" target="_self"><span class="__cf_email__" data-cfemail="533f32312013676360233234367d303c3e">[email protected]</span></a></div></div></div></section><section id="section-903-30" class=" ct-section" ><div class="ct-section-inner-wrap"><h2 id="headline-905-30" class="ct-headline conference-heading-two">Let us help</h2><div id="new_columns-906-30" class="ct-new-columns" ><div id="div_block-907-30" class="ct-div-block" ><div id="div_block-908-30" class="ct-div-block conference-iconblock-1-wrapper" ><img id="image-973-30" alt="" src="https://403.ie/wp-content/uploads/2021/10/020-contract.svg" class="ct-image"/><h1 id="headline-910-30" class="ct-headline conference-iconblock-1-title">TRAINING</h1><div id="text_block-911-30" class="ct-text-block conference-iconblock-1-text" >Custom training materials for your organisation from WordPress best-practices to advanced workflow optimisation.</div><a id="link_button-912-30" class="ct-link-button conference-orange-outline-button" href="/#section-947-30" target="_self" >Let's Chat</a></div></div><div id="div_block-913-30" class="ct-div-block" ><div id="div_block-914-30" class="ct-div-block conference-iconblock-1-wrapper" ><img id="image-975-30" alt="" src="https://403.ie/wp-content/uploads/2021/10/003-chat.svg" class="ct-image"/><h1 id="headline-916-30" class="ct-headline conference-iconblock-1-title">COACHING</h1><div id="text_block-917-30" class="ct-text-block conference-iconblock-1-text" >1-1 coding and development training for designers, developers and content-creators who want to get more out of WordPress.</div><a id="link_button-918-30" class="ct-link-button conference-orange-outline-button" href="/#section-947-30" target="_self" >Let's Chat</a></div></div><div id="div_block-919-30" class="ct-div-block" ><div id="div_block-920-30" class="ct-div-block conference-iconblock-1-wrapper" ><img id="image-977-30" alt="" src="https://403.ie/wp-content/uploads/2021/10/043-maintenance.svg" class="ct-image"/><h1 id="headline-922-30" class="ct-headline conference-iconblock-1-title">DEVELOPING</h1><div id="text_block-923-30" class="ct-text-block conference-iconblock-1-text" >Custom plugin development that modifies or adds advanced functionality to you or your client's sites.</div><a id="link_button-924-30" class="ct-link-button conference-orange-outline-button" href="/#section-947-30" target="_self" >Let's Chat</a></div></div></div></div></section><section id="section-983-30" class=" ct-section" ><div class="ct-section-inner-wrap"><div id="div_block-984-30" class="ct-div-block" ><h2 id="headline-985-30" class="ct-headline conference-heading-two">We made a thing!</h2></div><div id="text_block-987-30" class="ct-text-block" >...and we'd like you to have it.<br><br>Seamlessly allow logins to WordPress using an authenticated header sent from Cloudflare Teams.</div><a id="link_button-988-30" class="ct-link-button conference-white-outline-button" href="/release-wp-cloudflare-access-sso-0-1-0/" target="_self" >GET THE CODE HERE </a></div></section></div></div><section id="section-13-42" class=" ct-section" ><div class="ct-section-inner-wrap"><a id="link-42-42" class="ct-link conference-logo" href="https://403.ie" target="_self" ><img id="image-43-42" alt="403 Labs" src="https://403.ie/wp-content/uploads/2021/10/New-Project-1-svg.svg" class="ct-image"/></a></div></section></div> <!-- WP_FOOTER --> <!-- Global site tag (gtag.js) - Google Analytics --> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-W2V0BSPHH2"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-W2V0BSPHH2'); </script> <style>.ct-FontAwesomeicon-search{width:0.92857142857143em}</style> <style>.ct-FontAwesomeicon-close{width:0.78571428571429em}</style> <style>.ct-FontAwesomeicon-phone-square{width:0.85714285714286em}</style> <?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1"><defs><symbol id="FontAwesomeicon-search" viewBox="0 0 26 28"><title>search</title><path d="M18 13c0-3.859-3.141-7-7-7s-7 3.141-7 7 3.141 7 7 7 7-3.141 7-7zM26 26c0 1.094-0.906 2-2 2-0.531 0-1.047-0.219-1.406-0.594l-5.359-5.344c-1.828 1.266-4.016 1.937-6.234 1.937-6.078 0-11-4.922-11-11s4.922-11 11-11 11 4.922 11 11c0 2.219-0.672 4.406-1.937 6.234l5.359 5.359c0.359 0.359 0.578 0.875 0.578 1.406z"/></symbol><symbol id="FontAwesomeicon-close" viewBox="0 0 22 28"><title>close</title><path d="M20.281 20.656c0 0.391-0.156 0.781-0.438 1.062l-2.125 2.125c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-4.594-4.594-4.594 4.594c-0.281 0.281-0.672 0.438-1.062 0.438s-0.781-0.156-1.062-0.438l-2.125-2.125c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l4.594-4.594-4.594-4.594c-0.281-0.281-0.438-0.672-0.438-1.062s0.156-0.781 0.438-1.062l2.125-2.125c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l4.594 4.594 4.594-4.594c0.281-0.281 0.672-0.438 1.062-0.438s0.781 0.156 1.062 0.438l2.125 2.125c0.281 0.281 0.438 0.672 0.438 1.062s-0.156 0.781-0.438 1.062l-4.594 4.594 4.594 4.594c0.281 0.281 0.438 0.672 0.438 1.062z"/></symbol><symbol id="FontAwesomeicon-phone-square" viewBox="0 0 24 28"><title>phone-square</title><path d="M20 18.641c0-0.078 0-0.172-0.031-0.25-0.094-0.281-2.375-1.437-2.812-1.687-0.297-0.172-0.656-0.516-1.016-0.516-0.688 0-1.703 2.047-2.312 2.047-0.313 0-0.703-0.281-0.984-0.438-2.063-1.156-3.484-2.578-4.641-4.641-0.156-0.281-0.438-0.672-0.438-0.984 0-0.609 2.047-1.625 2.047-2.312 0-0.359-0.344-0.719-0.516-1.016-0.25-0.438-1.406-2.719-1.687-2.812-0.078-0.031-0.172-0.031-0.25-0.031-0.406 0-1.203 0.187-1.578 0.344-1.031 0.469-1.781 2.438-1.781 3.516 0 1.047 0.422 2 0.781 2.969 1.25 3.422 4.969 7.141 8.391 8.391 0.969 0.359 1.922 0.781 2.969 0.781 1.078 0 3.047-0.75 3.516-1.781 0.156-0.375 0.344-1.172 0.344-1.578zM24 6.5v15c0 2.484-2.016 4.5-4.5 4.5h-15c-2.484 0-4.5-2.016-4.5-4.5v-15c0-2.484 2.016-4.5 4.5-4.5h15c2.484 0 4.5 2.016 4.5 4.5z"/></symbol></defs></svg><?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1"><defs><symbol id="Lineariconsicon-envelope" viewBox="0 0 20 20"><title>envelope</title><path class="path1" d="M17.5 6h-16c-0.827 0-1.5 0.673-1.5 1.5v9c0 0.827 0.673 1.5 1.5 1.5h16c0.827 0 1.5-0.673 1.5-1.5v-9c0-0.827-0.673-1.5-1.5-1.5zM17.5 7c0.030 0 0.058 0.003 0.087 0.008l-7.532 5.021c-0.29 0.193-0.819 0.193-1.109 0l-7.532-5.021c0.028-0.005 0.057-0.008 0.087-0.008h16zM17.5 17h-16c-0.276 0-0.5-0.224-0.5-0.5v-8.566l7.391 4.927c0.311 0.207 0.71 0.311 1.109 0.311s0.798-0.104 1.109-0.311l7.391-4.927v8.566c0 0.276-0.224 0.5-0.5 0.5z"/></symbol></defs></svg><script type="text/javascript" id="ct_custom_js_116">/*jQuery Watch Plugin @author Darcy Clarke @version 2.0 Copyright (c) 2012 Darcy Clarke Dual licensed under the MIT and GPL licenses.*/ (function(e){e.fn.watch=function(t,n,r){var i=document.createElement("div");var s=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;var o=window.CustomEvent||function(){return arguments||{}};var u=function(e,t){e="on"+e;var n=e in t;if(!n){t.setAttribute(e,"return;");n=typeof t[e]=="function"}return n};if(typeof n=="function"){r=n;n={}}if(typeof r!="function")r=function(){};n=e.extend({},{throttle:10},n);var a=function(t){var n=this;e.each(this.watching,function(){var e=this;var r=false;var i;for(var s=0;s<e.props.length;s++){i=t[0].attributes[e.props[s]]||t.css(e.props[s]);if(e.vals[s]!=i){e.vals[s]=i;r=true;break}}if(r&&e.callback)e.callback.call(n,new o("AttrChange"))})};return this.each(function(){var o=this;var f=e(this);var l={props:t.split(" "),vals:[],changed:[],callback:r};e.each(l.props,function(e){l.vals[e]=f[0].attributes[l.props[e]]||f.css(l.props[e]);l.changed[e]=false});if(!this.watching)this.watching=[];this.watching.push(l);if(s){var c=new s(function(e){e.forEach(function(e){r.call(o,e)})});c.observe(this,{subtree:false,attributes:true})}else if(u("DOMAttrModified",i)){f.on("DOMAttrModified",r)}else if(u("propertychange",i)){f.on("propertychange",r)}else{setInterval(function(){a.call(o,f)},n.throttle)}})}})(jQuery); jQuery(document).ready(function($) { $('.oxygen-builder-body .oxy-modal-backdrop').css('height','auto'); if($('html').attr('ng-app') == 'CTFrontendBuilder') return; function scrollbarWidth(){var block = $('<div>').css({'height':'50px','width':'50px'}),indicator = $('<div>').css({'height':'200px'});$('body').append(block.append(indicator));var w1 = $('div',block).innerWidth();block.css('overflow-y','scroll');var w2 = $('div', block).innerWidth();$(block).remove();return (w1 - w2);} var bg = $('#modal-116-20').parent('.oxy-modal-backdrop'), backsize = $(bg).height(); function fixflex () { var backpos = $(bg).css('align-items'), screenh = $(window).height(), barh = $('#wpadminbar').height(); $(bg).css({'height':'calc(100% - '+barh+'px)','top':+barh+'px'}); if(backsize > screenh) { if($(bg).hasClass('right')) { $(bg).css('align-items','flex-end'); $(bg).css('justify-content','flex-start'); } else if($(bg).hasClass('left')) { $(bg).css('justify-content','flex-start'); } else { $(bg).css('align-items','flex-start'); } } else { if($(bg).hasClass('right')) { $(bg).css('justify-content','center'); } else if($(bg).hasClass('left')) { $(bg).css('justify-content','center'); } else { $(bg).css('align-items',backpos); } } } $(window).resize(function(event) { fixflex(); }); fixflex(); if(typeof $().watch == 'function') { $(bg).watch('display', function() { if($(this).css('display')=='flex') { $('body').css({'overflow-y':'hidden', 'height':'100%', 'position':'relative', 'margin-right':scrollbarWidth()+'px'}); $(this).css('overflow-y','auto'); $('.oxy-sticky-header-active').css('padding-right',scrollbarWidth()+'px'); if($('#modal-116-20[data-aos*="left"]')) { $(bg).css('overflow-x','hidden'); } } else if($(this).css('display')=='none') { $('.oxy-modal-backdrop').removeClass("live"); setTimeout(function() { $('body').css({'overflow-y':'auto','margin-right':'0'}); $('.oxy-sticky-header-active').css('padding-right','0'); }, 300); } }); } });</script> <script type="text/javascript"> jQuery(document).ready(function() { jQuery('body').on('click', '.oxy-menu-toggle', function() { jQuery(this).parent('.oxy-nav-menu').toggleClass('oxy-nav-menu-open'); jQuery('body').toggleClass('oxy-nav-menu-prevent-overflow'); jQuery('html').toggleClass('oxy-nav-menu-prevent-overflow'); }); var selector = '.oxy-nav-menu-open .menu-item a[href*="#"]'; jQuery('body').on('click', selector, function(){ jQuery('.oxy-nav-menu-open').removeClass('oxy-nav-menu-open'); jQuery('body').removeClass('oxy-nav-menu-prevent-overflow'); jQuery('html').removeClass('oxy-nav-menu-prevent-overflow'); jQuery(this).click(); }); }); </script> <script type="text/javascript"> // Initialize Oxygen Modals jQuery(document).ready(function() { function showModal( modal ) { var $modal = jQuery( modal ); $modal.addClass("live"); var modalId = $modal[0].querySelector('.ct-modal').id; var focusable = modal.querySelector('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'); if(focusable) { setTimeout(() => { focusable.focus(); }, 500); } else { setTimeout(() => { $modal.focus(); }, 500) } // Check if this modal can be shown according to settings and last shown time // Current and last time in milliseconds var currentTime = new Date().getTime(); var lastShownTime = localStorage && localStorage['oxy-' + modalId + '-last-shown-time'] ? JSON.parse( localStorage['oxy-' + modalId + '-last-shown-time'] ) : false; // manual triggers aren't affected by last shown time if( $modal.data( 'trigger' ) != 'user_clicks_element' ) { switch( $modal.data( 'open-again' ) ) { case 'never_show_again': // if it was shown at least once, don't show it again if( lastShownTime !== false ) return; break; case 'show_again_after': var settingDays = parseInt( $modal.data( 'open-again-after-days' ) ); var actualDays = ( currentTime - lastShownTime ) / ( 60*60*24*1000 ); if( actualDays < settingDays ) return; break; default: //always show break; } } // Body manipulation to prevent scrolling while modal is active, and maintain scroll position. document.querySelector('body').style.top = `-${window.scrollY}px`; document.querySelector('body').classList.add('oxy-modal-active'); // save current time as last shown time if( localStorage ) localStorage['oxy-' + modalId + '-last-shown-time'] = JSON.stringify( currentTime ); // trick to make jQuery fadeIn with flex $modal.css("display", "flex"); $modal.hide(); // trick to force AOS trigger on elements inside the modal $modal.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled"); // show the modal $modal.fadeIn(250, function(){ // trick to force AOS trigger on elements inside the modal $modal.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); }); if( $modal.data( 'close-automatically' ) == 'yes' ) { var time = parseInt( $modal.data( 'close-after-time' ) ); if( $modal.data( 'close-after-time-unit' ) == 'seconds' ) { time = parseInt( parseFloat( $modal.data( 'close-after-time' ) ) * 1000 ); } setTimeout( function(){ hideModal(modal); }, time ); } // close modal automatically after form submit (Non-AJAX) if( $modal.data( 'close-after-form-submit' ) == 'yes' && $modal.data("trigger") == "after_specified_time" ) { // WPForms // WPForms replaces the form with a confirmation message on page refresh if( $modal.find(".wpforms-confirmation-container-full").length > 0 ) { setTimeout(function () { hideModal(modal); }, 3000); } // Formidable Forms // Formidable Forms replaces the form with a confirmation message on page refresh if( $modal.find(".frm_message").length > 0 ) { setTimeout(function () { hideModal(modal); }, 3000); } // Caldera Forms // Caldera Forms replaces the form with a confirmation message on page refresh if( $modal.find(".caldera-grid .alert-success").length > 0 ) { setTimeout(function () { hideModal(modal); }, 3000); } } } window.oxyShowModal = showModal; var hideModal = function ( modal ) { // Body manipulation for scroll prevention and maintaining scroll position var scrollY = document.querySelector('body').style.top; document.querySelector('body').classList.remove('oxy-modal-active'); document.querySelector('body').style.top = ''; window.scrollTo(0, parseInt(scrollY || '0') * -1); // The function may be called by third party code, without argument, so we must close the first visible modal if( typeof modal === 'undefined' ) { var openModals = jQuery(".oxy-modal-backdrop.live"); if( openModals.length == 0 ) return; modal = openModals[0]; } var $modal = jQuery( modal ); // refresh any iframe so media embedded this way is stopped $modal.find( 'iframe').each(function(index){ this.src = this.src; }); // HTML5 videos can be stopped easily $modal.find( 'video' ).each(function(index){ this.pause(); }); // If there are any forms in the modal, reset them $modal.find("form").each(function(index){ this.reset(); }); $modal.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled"); $modal.fadeOut(400, function(){ $modal.removeClass("live"); $modal.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); }); }; window.oxyCloseModal = hideModal; jQuery( ".oxy-modal-backdrop" ).each(function( index ) { var modal = this; (function( modal ){ var $modal = jQuery( modal ); var exitIntentFunction = function( e ){ if( e.clientY <= 0 ) { showModal( modal ); document.removeEventListener( "mouseleave", exitIntentFunction ); document.removeEventListener( "mouseout", exitIntentFunction ); } } switch ( jQuery( modal ).data("trigger") ) { case "on_exit_intent": document.addEventListener( "mouseleave", exitIntentFunction, false); document.addEventListener( "mouseout", exitIntentFunction, false); break; case "user_clicks_element": jQuery( jQuery( modal ).data( 'trigger-selector' ) ).click( function( event ) { showModal( modal ); event.preventDefault(); } ); break; case "after_specified_time": var time = parseInt( jQuery( modal ).data( 'trigger-time' ) ); if( jQuery( modal ).data( 'trigger-time-unit' ) == 'seconds' ) { time = parseInt( parseFloat( jQuery( modal ).data( 'trigger-time' ) ) * 1000 ); } setTimeout( function(){ showModal( modal ); }, time ); break; case "after_scrolled_amount": window.addEventListener("scroll", function scrollDetection(){ var winheight= window.innerHeight || (document.documentElement || document.body).clientHeight; var docheight = jQuery(document).height(); var scrollTop = window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop; var isScrollUp = false; var oxyPreviousScrollTop = parseInt( jQuery( modal ).data( 'previous_scroll_top' ) ); if( !isNaN( oxyPreviousScrollTop ) ) { if( oxyPreviousScrollTop > scrollTop) isScrollUp = true; } jQuery( modal ).data( 'previous_scroll_top', scrollTop ); var trackLength = docheight - winheight; var pctScrolled = Math.floor(scrollTop/trackLength * 100); if( isNaN( pctScrolled ) ) pctScrolled = 0; if( ( isScrollUp && jQuery( modal ).data( 'trigger_scroll_direction' ) == 'up' ) || ( !isScrollUp && jQuery( modal ).data( 'trigger_scroll_direction' ) == 'down' && pctScrolled >= parseInt( jQuery( modal ).data( 'trigger_scroll_amount' ) ) ) ) { showModal( modal ); window.removeEventListener( "scroll", scrollDetection ); } }, false); break; case "on_scroll_to_element": window.addEventListener("scroll", function scrollDetection(){ var $element = jQuery( jQuery( modal ).data( 'scroll_to_selector' ) ); if( $element.length == 0 ) { window.removeEventListener( "scroll", scrollDetection ); return; } var top_of_element = $element.offset().top; var bottom_of_element = $element.offset().top + $element.outerHeight(); var bottom_of_screen = jQuery(window).scrollTop() + jQuery(window).innerHeight(); var top_of_screen = jQuery(window).scrollTop(); if ((bottom_of_screen > bottom_of_element - $element.outerHeight() /2 ) && (top_of_screen < top_of_element + $element.outerHeight() /2 )){ showModal( modal ); window.removeEventListener( "scroll", scrollDetection ); } }, false); break; case "after_number_of_clicks": document.addEventListener("click", function clickDetection(){ var number_of_clicks = parseInt( jQuery( modal ).data( 'number_of_clicks' ) ); var clicks_performed = isNaN( parseInt( jQuery( modal ).data( 'clicks_performed' ) ) ) ? 1 : parseInt( jQuery( modal ).data( 'clicks_performed' ) ) + 1; jQuery( modal ).data( 'clicks_performed', clicks_performed ); if ( clicks_performed == number_of_clicks ){ showModal( modal ); document.removeEventListener( "click", clickDetection ); } }, false); break; case "after_time_inactive": var time = parseInt( jQuery( modal ).data( 'time_inactive' ) ); if( jQuery( modal ).data( 'time-inactive-unit' ) == 'seconds' ) { time = parseInt( parseFloat( jQuery( modal ).data( 'time_inactive' ) ) * 1000 ); } var activityDetected = function(){ jQuery( modal ).data( 'millis_idle', 0 ); }; document.addEventListener( "click", activityDetected); document.addEventListener( "mousemove", activityDetected); document.addEventListener( "keypress", activityDetected); document.addEventListener( "scroll", activityDetected); var idleInterval = setInterval(function(){ var millis_idle = isNaN( parseInt( jQuery( modal ).data( 'millis_idle' ) ) ) ? 100 : parseInt( jQuery( modal ).data( 'millis_idle' ) ) + 100; jQuery( modal ).data( 'millis_idle', millis_idle ); if( millis_idle > time ){ clearInterval( idleInterval ); document.removeEventListener( "click", activityDetected ); document.removeEventListener( "mousemove", activityDetected ); document.removeEventListener( "keypress", activityDetected ); document.removeEventListener( "scroll", activityDetected ); showModal( modal ); } }, 100); break; case "after_number_of_page_views": var modalId = modal.querySelector('.ct-modal').id; var pageViews = localStorage && localStorage['oxy-' + modalId + '-page-views'] ? parseInt( localStorage['oxy-' + modalId + '-page-views'] ) : 0; pageViews++; if( localStorage ) localStorage['oxy-' + modalId + '-page-views'] = pageViews; if( parseInt( jQuery( modal ).data( 'number_of_page_views' ) ) == pageViews ) { if( localStorage ) localStorage['oxy-' + modalId + '-page-views'] = 0; showModal( modal ); } break; } // add event handler to close modal automatically after AJAX form submit if( $modal.data( 'close-after-form-submit' ) == 'yes' ) { // Contact Form 7 if (typeof wpcf7 !== 'undefined') { $modal.find('div.wpcf7').each(function () { var $form = jQuery(this).find('form'); this.addEventListener('wpcf7submit', function (event) { if (event.detail.contactFormId == $form.attr("id")) { setTimeout(function () { hideModal(modal); }, 3000); } }, false); }); } // Caldera Forms document.addEventListener( "cf.submission", function(event){ // Pending, Caldera AJAX form submissions aren't working since Oxygen 2.2, see: https://github.com/soflyy/oxygen/issues/1638 }); // Ninja Forms jQuery(document).on("nfFormSubmitResponse", function(event, response){ // Only close the modal if the event was triggered from a Ninja Form inside the modal if( $modal.find("#nf-form-" + response.id + "-cont").length > 0 ) { setTimeout(function () { hideModal(modal); }, 3000); } }); } })( modal ); }); // handle clicks on modal backdrop and on .oxy-close-modal jQuery("body").on('click touchend', '.oxy-modal-backdrop, .oxy-close-modal', function( event ) { var $this = jQuery( this ); var $target = jQuery( event.target ); // Click event in the modal div and it's children is propagated to the backdrop if( !$target.hasClass( 'oxy-modal-backdrop' ) && !$this.hasClass( 'oxy-close-modal' ) ) { //event.stopPropagation(); return; } if( $target.hasClass( 'oxy-modal-backdrop' ) && $this.hasClass( 'oxy-not-closable' ) ) { return; } if( $this.hasClass( 'oxy-close-modal' ) ) event.preventDefault(); var $modal = $this.hasClass( 'oxy-close-modal' ) ? $this.closest('.oxy-modal-backdrop') : $this; hideModal( $modal[0] ); }); jQuery(document).keyup( function(e){ if( e.key == 'Escape' ){ jQuery(".oxy-modal-backdrop:visible").each(function(index){ if( jQuery(this).data("close_on_esc") == 'on' ) hideModal(this); }); } } ); }); </script> <link rel='stylesheet' id='oxygen-aos-css' href='https://403.ie/wp-content/mu-plugins/oxygen/component-framework/vendor/aos/aos.css?ver=6.6.2' type='text/css' media='all' /> <script type="text/javascript" id="superpwa-register-sw-js-extra"> /* <![CDATA[ */ var superpwa_sw = {"url":"\/superpwa-sw.js?2.2.7","disable_addtohome":"1","enableOnDesktop":"","offline_message":"1","offline_message_txt":"You are currently offline."}; /* ]]> */ </script> <script type="text/javascript" src="https://403.ie/wp-content/plugins/super-progressive-web-apps/public/js/register-sw.js" id="superpwa-register-sw-js"></script> <script type="text/javascript" src="https://403.ie/wp-content/mu-plugins/oxygen/component-framework/vendor/aos/aos.js?ver=1" id="oxygen-aos-js"></script> <script type="text/javascript" id="ct-footer-js"> AOS.init({ }) jQuery('body').addClass('oxygen-aos-enabled'); </script><style type="text/css" id="ct_code_block_css_113"> #fancy_icon-115-20 {cursor: pointer;}</style> <script type="text/javascript" id="ct_code_block_js_120">focusSearch = function getFocus() { setTimeout( function() { document.getElementById('s').focus(); }, 800); } document.getElementById("s").placeholder = "What are you looking for?";</script> <style type="text/css" id="ct_code_block_css_120">#s { width: 100%; font-family: Arial Black; font-size: 24px; color: rgba(238,7,110,0.8); } #searchsubmit {display:none;} input:focus, select:focus, textarea:focus, button:focus { outline: none; } #_search_form-118-20 input { border-bottom: 3px solid rgba(238,7,110,0.8); } ::placeholder { color: rgba(238,7,110,0.8); } .oxy-modal-backdrop.live { position: absolute !important; }</style> <script type="text/javascript" id="ct_code_block_js_587">jQuery('a[href^="/#"]').click(function(e){ e.preventDefault(); jQuery('html,body').animate({scrollTop:jQuery(this.hash).offset().top}, 500); });</script> <!-- /WP_FOOTER --> </body> </html> <!-- Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com Retrieved 1752 objects (4 MB) from Redis using PhpRedis (v5.3.7). -->