Each template ships in two options. A runs standard GAM display inventory (daily default). B is a single-sponsor page takeover using approved Mundial Media IAB/high-impact formats only, all Celtra-ready and tagged with GAM slot paths. Previous editorial concept versions archived as *-B-premium.html for reference.
hreflang.
Kits, sneakers, stadiums, cinema. Cultural objects of global football.
OpenLongform profiles, essays, reported features on players, coaches, cities.
OpenKit drops, tunnel fits, streetwear releases, fashion-football overlap.
OpenNWSL, WSL, Liga F, international women’s football coverage.
OpenFIFA 2026 host cities, qualifying, kits, mascots, venue previews.
OpenHublot 728×90, ESPN+ and DraftKings 300×250s running through the grid.
Open mockupSponsor bar, co-branded hero, Shop-The-Story product rail, interactive gutter panels with live Amazon product cards, Amazon Pick ribbons, branded closing rail.
View Takeover ★ 1240px+ to see the skin takeoverHulu leaderboard, VAST pre-roll, Peacock MREC in the rail, Max at the bottom.
Open mockupVisa sponsor hero, branded pre-roll bumper, cardholder CTA strip, Visa-themed gutter panels with stadium access messaging.
View Takeover ★ 1240px+ to see the skin takeoveradidas leaderboard, Mr Porter mid-gallery interstitial, Uniqlo at the bottom.
Open mockupSamsung sponsor bar, Galaxy-framed slide player, phone-viz interstitial, “Shot on Galaxy” ribbons, branded endslate.
View Takeover ★ 1240px+ to see the skin takeover| Template | Mockups | WP Template File | ACF Field Group | Sponsor CPT | GAM Slots |
|---|---|---|---|---|---|
| Category Landing A · B |
landing-A.html landing-B.html |
template-category-landing.php |
group_category_landing |
sponsorship (relationship) |
/stadio/landing/header-728x90/stadio/landing/inline-300x250/stadio/landing/skin-takeover-1800x1000/stadio/landing/interscroller-600x600/stadio/landing/interscroller-320x480/stadio/landing/mobile-skin-320x480 |
| Video Hub A · B |
video-A.html video-B.html |
template-video-hub.php |
group_video_hub |
sponsorship (relationship) |
/stadio/video/top-728x90/stadio/video/pre-roll-vast/stadio/video/rail-300x250/stadio/video/skin-takeover-1800x1000/stadio/video/interscroller-600x600/stadio/video/interscroller-320x480/stadio/video/mid-video-interstitial-800x600/stadio/video/mid-vertical-video-interstitial-320x480/stadio/video/mobile-skin-320x480 |
| Slideshow A · B |
slideshow-A.html slideshow-B.html |
template-slideshow.php |
group_slideshow |
sponsorship (relationship) |
/stadio/slideshow/top-728x90/stadio/slideshow/footer-728x90/stadio/slideshow/skin-takeover-1800x1000/stadio/slideshow/interscroller-600x600/stadio/slideshow/interscroller-320x480/stadio/slideshow/mid-interstitial-800x600/stadio/slideshow/mobile-skin-320x480 |
sponsorship, public false, show_in_rest true--sp CSS var--sp-ink CSS varsponsor=amazon)standard | takeoverpostsponsorship (nullable)standard | takeoverpost type=videosponsorshipstandard | takeoversponsorship<?php /* Template Name: Category Landing */ get_header(); $layout = get_field('layout_mode'); $sponsor = get_field('sponsor'); $is_takeover = ($layout === 'takeover' && $sponsor); // GAM targeting: pass sponsor slug as key-value if ($is_takeover) { $sp_slug = get_field('gam_kv_sponsor', $sponsor->ID); add_action('wp_head', fn() => printf( '<script>googletag.pubads().setTargeting("sponsor","%s");</script>', esc_js($sp_slug) )); } ?> <?php if ($is_takeover): ?> <!-- Gutter skins only render when sponsor exists and viewport ≥ 1200px (CSS) --> <aside class="skin left"> <img src="<?= esc_url(get_field('gutter_L', $sponsor->ID)) ?>"> </aside> <aside class="skin right"> <img src="<?= esc_url(get_field('gutter_R', $sponsor->ID)) ?>"> </aside> <?php endif; ?> <main class="page-category <?= $is_takeover ? 'is-takeover' : '' ?>"> <?php get_template_part('parts/landing/hero'); ?> <?php if ($is_takeover) get_template_part('parts/landing/shop-rail', null, ['sponsor'=>$sponsor]); ?> <?php get_template_part('parts/landing/editorial-grid'); ?> </main> <?php get_footer(); ?>
sponsorship post type in /inc/cpt-sponsorship.php. Populate one real sponsor (Amazon) as the reference record./acf-json/ and sync on load. No DB-only groups.parts/landing/hero.php, parts/landing/shop-rail.php, etc. Reuse between A and B, the only branch is $is_takeover.<style> in wp_head that sets --sp and --sp-ink from the sponsor’s color fields. All B styling reads these vars, swap sponsor, swap palette.calc((100vw - 1040px)/2 - 8px) on each side. Content column is capped at 1040px so skins never overlap editorial.interscroller_creative (takeover) or GAM OOP line (regular). Frequency cap 1/session./stadio/<template>/<slot> in GAM UI. Pass sponsor=<slug> key-value on takeover pages for line-item targeting and reporting.index.html at root, all paths relative. No build step needed for the review site.<title>, <meta name="description">, <link rel="canonical">, and full Open Graph + Twitter Card tags. Content team fills the ACF fields, the template renders the rest.<script type="application/ld+json"> block with schema.org CollectionPage (sections) or Article (stories). Embedded itemprop on hero/feature blocks reinforces it for crawlers and LLMs.hreflang="en", hreflang="es", hreflang="x-default". Ukraine devs wire the ACF string fields to a language param so the Spanish version ships later without template changes.GPTBot, ClaudeBot, PerplexityBot, Google-Extended. Sitemap declared.<header role="banner">, <nav role="navigation">, <article itemscope>. Alt text on every image pulled from ACF image_alt field.