GP WordPress Project Summary
*** VIEW THE LATEST UPDATES ***
Definitions & Disclaimers
Names used In this Summary: "DEV", "GP DEV" refers to the project at hand, the new theme being built "great-performances-farsky-theme-2025". "PROD", "GP PROD" refers to the current active and public-facing website that will eventiually be replaced by DEV. "GP" refers to the client company "Great performances".
ALL block examples in this document are placeholders, pending Danica’s designs, Carina’s content input, and Liz's final.
Server & Development Environment:
- Project: Great Performances Website (FarSky Theme 2025)
- Environment: DigitalOcean Droplet, IP 159.65.37.117, subdomain dev.greatperformances.com
- Dev Environment: LAMP w/ 4 GB Memory / 2 Intel vCPUs / 120 GB Disk / NYC3
- WordPress Version: 6.8.1
- PHP Version: 8.4.10
- Theme: Custom FarSky Theme 2025
- Far Sky Development Environment: Working through SSH Portal via BASH (Digital Ocean, MySQL, sFTP). Sublime Text 2 with SFTP, MySQL via MySQL Workbench ( via SSH), sFTP via Cyberduck (and SFTP in Sublime), BASH via Terminal, GiT via GiT Desktop.
- A copy of PROD's database has been made on DEV entitled "gpprodcopy". The DEV database is entitled "wordpress".
- Theme Path: /var/www/html/wp-content/themes/great-performances-farsky-theme
- Error Log: /var/www/html/wp-content/elm-error-logs/php-errors.log
Project Overview:
Purpose:
- Great Performances (GP) is one of a very few premier catering and hospitality management companies serving the New York Metro area. According to search result authorities, there are 10 to 18 high-quality event caters serving the NYC area. Great Performances is squarely in that list. However the site does not rank for searches on the subject. This means that GP’s individual site pages are not ranking for relevance and/or authority when it comes to topics typically searched by potential clients. The low individual pages scores are then giving the GP URL overall a low score and low trust. Hence, the site does not come up in search results.
- NOTE: The lighthouse baseline for PROD is: 26 / 79 / 46 / 85
- Great Performances (GP) has a wide range of offered services and, thus, a wide range of diverse clients. One of the primary goals is to formulate a page and navigation scheme that will speak to each one of those client-types and “tell the GP story” in such a way that it speaks to these diverse client types (e.g.,a wedding event client and a workplace cafe client)
- A look at PROD navigation shows a large series of pages that do not have a linear navigation scheme and, thus, do not tell a cohesive story. The fact that the services offered by GP are many and diverse adds to the confusion and content mismatch making the site visitor wonder just who GP is speaking to and if the company is right for them.
- The 2025 Great Performances website redesign addresses these longstanding challenges with messaging, search engine performance, user intuitive navigation, and site speed while preserving the existing graphical elements, colors, and brand look and feel. The first goal is to create a streamlined site map, intuitive layout, and clear navigation structure that deliver targeted, linear storytelling tailored to each client type (e.g., corporate events, weddings, venue partnerships, etc.). This will enhance user engagement and establish stronger subject relevance and authority for search engines.
- To achieve this, we will consolidate and refine existing web pages into focused content blocks of pages, some tailored to specific client types and others providing universal information. This approach ensures each client finds relevant information quickly, improving their experience and engagement. For consistency, we will maintain the current graphical elements and colors while honing the user interface.
- Internal site links will be optimized to guide visitors toward key actions, such as the contact form or chatbot, reducing bounce rates and encouraging conversions.
- Throughout the project, I will focus on technical improvements, both server-side and client-side that will minimize browser requests and accelerate page load times. These enhancements will deliver a faster, more reliable experience for visitors, boosting search engine rankings and user satisfaction and experience.
- There are a number of other technical aspects that add or subtract from scores as well. A systematic simplification and restructuring of the page markup (the HTML under the hood) into what is called semantic coding will deliver a consolidated series of relevant and authoritative pages that can easily be scanned by a search engine crawler.
- Reducing meta tags, script, and styling “includes” is also a major portion of this stage that greatly reduces bulk thus improving load times. This will give us the bandwidth to add the myriad gallery images that need to be included in the layout.
Key Features:
- The Great Performances website redesign will include 32+ custom layout templates, each with tailored CSS, client-side JavaScript/jQuery, and server-side scripting to support intuitive navigation, SEO performance, and content management. Templates are categorized into Unique Page Layouts, Unique Module Layouts, and Repeated Use Templates, ensuring flexibility for the content manager while maintaining clean, semantic markup within the custom WordPress theme and Elementor Pro framework.
- Each of the pages and page templates are distict. Therefore the use of ACF Pro is required.
Installed Plugins required for this build:
- Rank Math SEO
- WPS Hide Login
- Query Monitor
- iThemes Security (now Solid Security)
- ACF Pro
- Two Factor
- Error Log Monitor (configured for EERROR | EWARNING)(installed)
Intended Plugings not yet installed as of this writing:
- Elementor Pro
- HubSpot with google analytic scripting via wpenqueuescripts
- WP Rocket
- PDF Viewer (TBD, Flipping Book, PDF Embedder, custom using lazysizes.min.js)(Not yet chosen, trying to avoid)
- Technical Stutus
- functions.php
- inc/bootstrap.php
- inc/tools.php
- inc/gpnavwalker.php
- css/gpcustomstyles.css
- js/library.js
- js/modernizr.js enqueued
- js/lazysizes.min.js enqueued as fallback
- swiper.min.js is enqueued for relevant pages.
- jQuery used throughout
- page-correlation.csv details pages, page types, post types, relative URLS, etc.
- Wordpress
- Root header.php and footer.php used
- All modal overlays live in the footer
- Root repeaters used for post types (e.g., single-posts.php, single-venues.php, single-individuals.php, single-partners.php, etc.)
- ACF Pro
- Local sync files in /acf-json
- Fast, Slim, & Trim:
- For all stages, pages, and templates, the goal is to minimize the number of database calls (redundancy).
- For all stages, pages, and templates, the goal is semantic, minimal mark-up as needed to achieve visual designs (WAI)
- For all stages, pages, and templates, the goal is to eliminate unused features (Reduce Bloat)
- For all stages, pages, and templates, the goal is WAIT compliance to eliminate the need for a Plugin.
- Home Page (page-home-landing.php):
» A site map guiding general visitors to audience-specific sections. - Catering & Events Section:
» Catering & Events Landing Page (page-catering-events-landing.php): Tailored homepage for private event clients. - Our Food Section:
» Our Food Landing Page (page-our-food-landing.php): Showcasing culinary philosophy.
» Katchkie Farm Template (page-our-food-katchkie.php): Highlighting farm-to-table sourcing.
» Event Menus Template (page-our-food-menus.php): Detailing catering menus. (Possibly a new Post Type) - How We Do It Section:
» How We Do It Landing Page (page-design-logistics-landing.php): Outlining GP’s process. - Event Design & Logistics Template (page-design-logistics.php): Covering event planning services.
» Event Staffing Template (page-design-logistics-staffing.php): Detailing staffing solutions. - Collaborations & Partnerships Section:
» Collaborations & Partnerships Landing Page (page-collaborations-partnerships-landing.php): For venue partners. - Hospitality Management Section:
» Hospitality Management Landing Page (page-hospitality-management-landing.php): For hospitality clients. - About Us Section:
» About Us Landing Page (page-about-us-landing.php): Brand history and mission.
» Meet The Team Template (page-about-us-team.php): Team bios and roles.
» Community Initiatives Template (page-about-us-community.php): Social impact initiatives. - Venue Search System (VSS):
» Venue Search Form (page-vss.php): Search interface for venues.
» Venue Search Detail (template-vss-detail.php): Detailed venue information. - Blog Section:
» Blog Search Form (page-blog.php): Blog post search interface.
» Blog Detail (template-blog-detail.php): Individual blog post template. - GP Careers Section:
» GP Careers Search Form (page-careers.php): Job listing search interface.
» Position Detail (template-careers-detail.php): Individual job posting details. - FAQs Page (page-faqs.php): Standalone FAQ page.
- Site Search System (page-sss.php): Overlay module for site-wide search with results. (Displays as Modal and Page)
- Contact Us: Contact Form and DB Security, Emailer (page-contact.php): Secure contact form with email integration. (Displays as Modal and Page)
- Global Header (header.php): Site-wide header with dynamic includes.
- Global Footer (footer.php): Site-wide footer with dynamic includes and Modals .
- Global Navigation (template-parts/navigation-main.php): Site wide navigation.
- Content Blocks:
- Gallery (template-parts/gallery.php)
- Carousel (template-parts/carousel.php)
- Highlight Block Halves (template-parts/highlight_block_halves.php)
- Highlight Block Whole (template-parts/highlight_block_whole.php)
- Highlight Block Knockout (template-parts/highlight_block_knockout.php)
- Testimonial (template-parts/testimonial.php) Testomonials Post Type
- Repeated Use Layouts and Post Type Templates:
- Venue Detail (single-venues.php) (Venues Post Type)
- PEOPLE Template (template-people-highlight.php): For team and partner profiles (e.g., Chef’s Choir, Sales Team, GP Artists). (Became Individuals Post Type)
- COMPANY Template (template-company-highlight.php): For company and partnership pages (e.g., Our Venues, Cafes & Restaurants). (Becasme Partners Post Type)
- C&E TYPE 1 Template (template-catering-events-type-1.php): For event types (e.g., Corporate, Non-Profit, Social).
- C&E TYPE 2 Template (template-catering-events-type-2.php): For wedding-specific content.
- HM TYPE 1 Template (template-hospitality-management-type-1.php): For hospitality services (e.g., Cultural Institutions, Workplace Dining).
- Legal Template (template-legal.php): For legal pages (e.g., Privacy, Cookies, EULA).
- Created a DigitalOcean droplet (IP: 159.65.37.117, subdomain: dev.greatperformances.com) with LAMP stack (PHP 8.4.10, MySQLi, Imagick) and WordPress 6.8.1 installed. Configured environment for development, including SSH access via Terminal and SFTP via CyberDuck.
- Developed and activated the "Great Performances FarSky Theme 2025" in /var/www/html/wp-content/themes/great-performances-farsky-theme. Removed all other themes for security. Set up directory structure with css/, fonts/, inc/, js/, languages/, and template-parts/.
- Created placeholder files for all 32 templates (20 unique pages, 6 modules, 6 reusable templates) as listed in the SOW, including page-home-landing.php, template-catering-events-type-1.php, header.php, and gallery.php.
- Implemented optimizations in functions.php to remove unnecessary WordPress features (e.g., emoji scripts, XML-RPC, default styles, REST API links, RSS feeds, RSD, WLW, shortlinks). Achieved Lighthouse baseline of 100/100/100/91, improving to 100/100/100/92 after plugin installations.
- Installed and configured Rank Math SEO, WPS Hide Login, Query Monitor, Solid Security, Two Factor, and Error Log Monitor (set to EERROR | EWARNING). Awaiting credentials for Elementor Pro, ACF Pro, WP Rocket, and HubSpot. Excluded Post Category Filter and Classic Editor from DEV unless needed post-migration.
- Built watermarking logic in tools.php and functions.php for WP Media Library and Elementor Pro images, using ACF fields (copyright_year, attribution_text, contrast, attribution_url). Watermarked images are stored in /var/www/html/wp-content/uploads/watermarked/ with size-specific versions. Added hooks for upload, ACF updates, and deletion.
- Developed gallery.php using wp_get_attachment_image_url and attachment_id_for function in functions.php. Implemented lazy loading with lazysizes.min.js and fixed empty data-src issues by hardcoding URLs temporarily until ACF Pro credentials are available. Added modal support with accessibility features (tabindex="0", focus trapping).
- Integrated Swiper for hero sliders as a reusable module for page templates, with assets enqueued in functions.php (Swiper 8.4.7, carousel.js). Tested for responsiveness and accessibility.
- Configured main-navigation.php and footer.php for site-wide navigation. Added toggle functionality in library.js for primary navigation hamburger menu. Resolved unwanted gp-contact-trigger and gp-search-trigger classes on nav links by commenting out Nav Walker lines in functions.php.
- Implemented contact, search, and gallery modals in library.js with AJAX content loading (gp_load_modal_content in functions.php). Added accessibility features (e.g., focus trapping, aria-hidden, tabindex="0") and refined close handlers to ensure only gallery modals close via overlay clicks.
- Set up page-contact.php with placeholder HubSpot integration in library.js for form submission. Awaiting HubSpot API credentials for final implementation. Ensured form accessibility with focus management.
- Built a loop in page-faqs.php using ACF to display topics and questions dynamically. Added unique aria-controls and id attributes for accessibility, tested on page-faqs.php for toggle behavior.
- Implemented site-wide lazy loading with lazysizes.min.js (in library.js and functions.php) for non-hero images, bypassing WP Rocket’s lazy loading. Tested on page-catering-events-landing.php for gallery images, ensuring performance optimization.
- Created bootstrap.php to define relative and absolute constants (e.g., TEMPLATE_DIR, JS_URI) for theme paths, moving them from functions.php to improve modularity.
- Defined URL/template correlations in page-correlation.xlsx for intuitive navigation and SEO, with primary, secondary, and tertiary page ranks partially set. Awaiting finalization post-design.
- Added accessibility features (e.g., aria-expanded, aria-hidden, focus trapping) to navigation, modals, and FAQs. Planned for a WAI-compliant plugin (TBD, possibly accessiBe) to ensure compliance.
- Held meeting on July 9, 2025, with Carina and Brandon to align on modular blocks and prioritize page-home-landing.php. Awaiting content specs and Danica’s designs for key pages and blocks (e.g., FAQs, sliders).
- Configured ACF to save/load JSON files in acf-json/ directory via functions.php filters. Prepared for manual syncing of field groups once ACF Pro credentials are available, addressing database mismatches for gallery images.
- Retrofitted all pages with php's __() structure for future proofing translation functionality.
- Created /template-parts/ for all Elementor based template block elements (i.e., gallery, testimonial) and added gp_register_elementor_templates() hook to import to Elementor.
- Cleared existing DEV taxonomy terms (location, eventtype, venuetype, style) and imported 66 PROD terms with matching IDs (e.g., Brooklyn=399, Weddings=373) using a PHP script, resolving “Invalid taxonomy” errors by ensuring proper registration in functions.php.
- Updated venue_details.json to change location from checkboxes to a single-select dropdown, reflecting single-choice venue locations, and finalized all fields (Synopsis, Why We Love It, Discover, Spaces, Amenities, Map, Contact, FAQ).
- Created a comprehensive PROD-to-DEV data mapping for all venues fields, covering wppostmeta (venuename, venuegallery, etc.), wpterm relationships (taxonomies), and attachment IDs, with queries to identify PROD metakey names. Troubleshooting: Addressed issues with venue_gallery (serialized image IDs), empty attachment queries, and plugin UI recognition, opting for a functions.php include for taxonomy imports due to team constraints.
- Ensured search compatibility (e.g., location filtering) and user-friendly admin UI (checkboxes with “Add New Term” for taxonomies, single-select for location), maintaining Lighthouse scores.
- Built complete ACF fields for new post type: Venue. Added fields to venue post type (in keeping with the Data Mapping above.)
- Created ACF fields for global display overrides for venue detail data. Testimonials, Prefooter, and Loader settings created but require additional params to act as desired.
- Developed import-venues.php (artifact_id: 557cdcd6-7c2c-456b-aea1-ecec929e7710) to import 102 venues from gp_prod_copy to WordPress 6.x (FarSky Theme). Key features:
- Maps PROD fields to DEV (venue_name, capacity, spaces, faq, etc.).
- Deduplicates amenities (Parking Lot Lot → Parking Lot, Natural Natural Light → Natural Light, In House AV-Tech → In-House Av/Tech).
- Cleans
in style (e.g., National Register of Historic Places). - Handles spaces repeater (e.g., Mainstage, Lobby Atrium for Apollo Theater).
- Logs global FAQs (faqs_eventplaning_faq, etc.) for future gp-faq import.
- Addressed loss of venue-specific FAQs (e.g., Apollo: 7, NYPL: 7, Brooklyn Museum: 5) by relaxing the filter in import-venues.php. Deduplicates wp_postmeta entries to handle duplicate faq_*_question rows.
- Added default phone 2127272424 for empty fields to prevent “Invalid phone format” errors (e.g., venues 36163, 36795, 36890, 36982, 37106, 37264, 37386).
- Confirmed add_taxonomies.php (v1.0.6) sets up terms like Handicap Accessible (1404), Wheelchair Accessible (1442). Verified On-Site Accommodations (1441) is unused (count: 0).
- Identified faqs_* fields (e.g., faqs_eventplaning_faq) as global for the FAQ page, excluded from venue import, and logged for later use.
- Migrated 128 venues (post_type = 'venues') from gp_prod_copy.wp_posts to wordpress.wp_posts, preserving post_title, post_content, and post_status (publish for 104, draft for 24).
- Transferred taxonomies (location, neighborhood, venue_type, event_type, style, amenities) to wordpress.wp_term_relationships via tax_input.
- Saved all non-image ACF fields in wordpress.wp_postmeta, including:
- Simple fields: venue_id, venue_name, capacity, order, venue_exclusive_option, why_we_love_it, discover_description, amenities_title, address, google_map_link, google_map_embed_code, venue_google_map, contact_name, email_address, phone, faq_description.
- True/False fields: show_synopsis, show_why_we_love_it, show_discover, show_spaces, show_amenities, show_map, show_contact, show_faq (defaulted to 1).
- Repeater fields: spaces (subfields: space_title, space_description, space_capacity, space_photo), faq (subfields: question, answer).
- Apollo Theater (PROD ID 1661): 3 spaces, 7 FAQs.
- Brooklyn Academy of Music (BAM, ID 1668): 2+ spaces, 6 FAQs.
- Jazz at Lincoln Center (JALC, ID 1681): 5 spaces, 6 FAQs.
- Successfully imported all 104 published and 24 draft venues, verified via random sampling in the WordPress admin UI and database queries.
- Successfully imported 9336 attachments from PRODDB (gp_prod_copy.wp_posts) to DEVDB (wordpress.wp_posts).
- Created wp_attachment_id_map table in wordpress database with 9336 mappings (prodid to devid).
- Verified counts:
```sql SELECT COUNT(*) FROM gp_prod_copy.wp_posts WHERE post_type='attachment'; » 9336 SELECT COUNT(*) FROM wordpress.wp_posts WHERE post_type='attachment'; » 9336 SELECT COUNT(*) FROM wordpress.wp_attachment_id_map; » 9336 '''
- Imported venues using import-venues-master.php.
- Mapped PRODDB IDs (1650, 1661, 1668) to DEVDB IDs (465, 466, 467) via wp_postmeta (meta_key = 'venue_id').
- Partial success with spaces repeater fields (spaces_N_space_title, spaces_N_space_capacity) displaying in UI where N is the repeater number.
- import-venue-images.php: Transfers image meta (venue_gallery, discover_banner, why_we_love_it_thumbnail, faq_photo) and spaces repeater fields (space_photo, space_title, space_capacity, space_description) from PRODDB to DEVDB, using wp_attachment_id_map for ID mapping.
- _venue_gallery: field_687abef892ddf
- _why_we_love_it_thumbnail: field_why_we_love_it_thumbnail
- _faq_photo: field_faq_photos
- _discover_banner: field_687aa0486420d
- spaces repeater: field_spaces
- spaces_N_space_photo: field_space_photo
- spaces_N_space_title: field_space_title
- spaces_N_space_capacity: field_space_capacity
- spaces_N_space_description: field_space_description
- Identified double-serialization in wp_postmeta for _wp_attachment_metadata (e.g., s:1369:"a:5:{...}") and venue_gallery (e.g., s:51:"a:3:{...}"), causing images to grey out in the ACF UI editor and wp media regenerate failures.
- Root cause: Manual serialize() calls in image-import-sk.php and import-venue-images.php, compounded by update_post_meta() auto-serialization.
- Fixed by updating image-import-sk.php to remove manual serialization:
Each time a new plugin is installed I make a lighthouse check and eliminate unneeded or bloat making features when possible using functions.php.Sincethe addition of installed plugins, lighthouse values are 100/100/100/92.
Aim for Lighthouse scores of 95+/95+/95+/90+ post-plugin installations (WP Rocket, Elementor Pro, HubSpot).
Key Scripts & Documents for This Project:
Methods and Conventions for This Project:
Deliverables:
Unique Page Layouts. Standalone pages or Content Blocks (Template Parts):
Unique Page Layouts. Globally used templates and template-parts:
Progression:
Development Server Setup:
Theme Creation:
Template Placeholders:
Bloat Reduction:
Plugin Installation:
Image Attribution and Watermarking:
Gallery Module:
Carousel Module:
Main and Footer Navigation:
Modal Overlays:
Contact Form:
FAQ Functionality:
Lazy Loading:
Constant Definitions:
Navigation and SEO Structure:
Accessibility Preparations:
Client Collaboration:
ACF JSON Setup:
Multi-Lingual Methodology:
Prepared and Structured for Elementor Blocks:
Taxonomy Import:
Field Adjustments:
Data Mapping:
Search & UI:
Venue Wordpress UI Created:
Global Venue Settings:
Venue Import Script:
FAQ Fix:
Phone Fix:
Taxonomies:
Global FAQs:
Posts:
Taxonomies:
ACF Meta Fields:
Tested Venues: Validated three test venues:
Full Import:
Attachment Migration:
Venue Migration:
Scripts Developed:
ACF Field Keys (confirmed from PRODDB):
Diagnosed and Fixed Double-Serialization Issues:
$dev_data[$dev_post_id]['venue_gallery']['DEV'] = $dev_gallery_images; update_post_meta($dev_post_id, 'venue_gallery', $dev_data[$dev_post_id]['venue_gallery']['DEV']);
- Developed PHP scripts (fix-metadata-all.php, fix-gallery-all.php) to unserialize double-serialized data for all attachments and venues.
Restored Missing _wp_attached_file Entries:
- Discovered missing _wp_attached_file in wp_postmeta for migrated images, causing regeneration and UI display issues.
- Created fix-attached-file-all.php to add _wp_attached_file using _wp_attachment_metadata['file'] for 9,000+ images. li>
- Updated migrate_attachments-master.php to include _wp_attached_file for future migrations:
if (!empty($metadata['file'])) {
update_post_meta($new_id, '_wp_attached_file', $metadata['file']);
}
Restored Image and Gallery Display:
- Manually fixed _wp_attachment_metadata and _wp_attached_file for key images (e.g., IDs 2072, 3152, 8349, 8348, 3153, 1665, etc.) for venues 465, 466, 467.
- Re-ran image-import-sk.php with corrected serialization, ensuring venue_gallery, discover_banner, why_we_love_it_thumbnail, and spaces_N_space_photo displayed correctly.
- Verified 22 venues (12 initial + 10 additional) in the WP UI editor and front-end, confirming all images and galleries work.
Avoided Unnecessary Regeneration:
- Confirmed PROD thumbnails were intact in /var/www/html/wp-content/uploads/, matching _wp_attachment_metadata['sizes'].
- Successfully regenerated a sample image (ID 8349), proving metadata fixes were effective.
- Decided against full regeneration of 9,000+ images, as thumbnails were present and UI displays were correct, saving significant processing time.
Prepared for Posts Migration:
- Learned lessons to avoid double-serialization and ensure _wp_attached_file in future migrations.
- Outlined initial steps for Elementor posts migration, including analyzing _elementor_data, testing Elementor’s Import/Export Kit, and mapping attachment IDs using wp_attachment_id_map.
- All 124 venues’ images and galleries now display correctly in the ACF UI and front-end.
- Outcome
- Migration scripts (migrate_attachments-master.php, image-import-sk.php) are updated to prevent double-serialization and set _wp_attached_file.
- Database fixes applied to 9,000+ images via fix-metadata-all.php, fix-gallery-all.php, and fix-attached-file-all.php.
- Ready to proceed with posts migration, leveraging Elementor tools and custom scripts to handle _elementor_data.
Accessibility Improvements:
- Updated template-parts/gallery.php to use background images (background-size: cover) for 170px by 165px thumbnails, adding role="button", tabindex="0", aria-label, and
<span class="screen-reader-text"></span>
for WCAG compliance. - Clarified __() (returns translated string) vs. _e() (echoes translated string), ensuring correct usage in aria-label attributes.
Modal Integration:
- Implemented a Swiper-powered gallery modal in footer.php (#gallery-modal), reusing the existing modal system (library.js) for contact-us and search modals, with focus management and ESC key handling.
Modular JavaScript:
- Created inc/gallery.js to handle gallery-specific logic, moving it from library.js to maintain slim-and-trim script loading via < code>functions.php (enqueued only for relevant templates: page-home.php, template-people-highlight.php, template-company-highlight.php, page-our-food.php).
Fixed Event Triggers:
- Resolved .gallery-item click/keydown issues by correcting class names (.gallery-thumbnails, .gallery-item) and using $(document) event delegation in gallery.js.
Clean Styling:
- Customized Swiper styles in gp_custom_style.css using custom classes (gp-swiper-button-prev, gp-swiper-pagination-bullet) defined in gallery.js, avoiding !important with high-specificity selectors (e.g., .gp-modal .gp-swiper-button-next).
Wordpress CPTs:
- Determined the best structure for venues, people-highlight, company-highlight, testimonials is CPTs: Added definitions to functions.php
- Built single-partners.php template.
- Built single-individuals.php template.
- Built sinbgle-testimonials.php (which will use template-parts/testimonial.php)
- Built /sandbox.php template page for design work. Will be deleted for production.
Home Page Design:
- Home page design received.
- Built primary home page mark-up for text content blocks: Left, Right, and center with responsive query breaks @ 321, 481, 601, 769, 1025, and 1201px. li>
- Built ACF FLEX BLOCKS for highlightblockhalves, highlightblockwhole, highlightblockknockout. Assigned ACF fields and attached them to (as of now) the home page.
- Built global responsive CSS for above blocks.
Header, Footer, Navigation:
- Built the global navigation markup and responsive CSS with animation
- Built the global footer markup and responsive CSS.
- Built ACF FLEX BLOCK for hero image with fields and assigned to home page.
Icons & Sprites:
- Built sprites/taxonomy-sprite.webp
- Built social-sprite.webp
- Built sprites/site-sprite.webp
Lighthouse for August:
- Score with fully populated home page is 99/96/100/92
- No work has been done for SEO.
Modal overlay Update:
- Updated modal overlays to use main navigation animation.
- Updated WAI Focus trap to deal with AJAX focus loss on close - warnings.
Header and navigation Bar Rebuild:
- Updated Header and navbar to auto-hide on scroll.
- Updated modals and menu to match header dimensions, style, and animations.
C&E Page Design Received:
- Build out for Catering and Events:
- Design and build new Flex Block: Picture in Picture for both Left and Right layouts.
- Re-worked media queries for PIP.
- Added dark gradient to Hero Image template part.
- Added overflow-x limit for flexbox align-self:flex-end bug.
Header and navigation Bar Rebuild (AGAIN!):
- Added background color DIV to header bar and scripted opacity shifts based on scroll.
Altered site width and max-width for elements:
- Site max-width now 1920px, element blocks stop growth at 1440.
- Header bar now limits to 1920px
- Set site <p> tags to font-size:16px; globally.
FAQ Page Design Received:
- Build out for FAQ:
- Design and build new Flex Block: Simple Image.
- Altered FAQ content block loop to save out-of-sequence block rendering with ob_start() and ob_get_clean();
- Styled FAQ Q/A blocks with mobile media queries below 600px.
- Added overflow-x limit for flexbox align-self:flex-end bug.
Applied Flex Blocks to all T2 Pages.
- Applicable Pages:
- page-about-us-landing.php
- page-catering-events-landing.php
- page-collaborations-partnerships-landing.php
- page-design-logistics-landing.php
- page-hospitality-managment-landing.php
- page-our-food-landing.php
Applied Flex Blocks to all T3 Pages.
- Applicable Pages:
- page-about-us-community.php
- page-about-us-team.php
- page-catering-events-type-1.php
- page-catering-events-type-2.php
- page-design-logistics.php
- page-design-logistics-staffing.php
- page-hospitality-managment-type-1.php
- page-our-food-katchkie.php
- page-our-food-menus.php
- page-our-food-food-beverage.php
Modified Picture-In-Picture Template Part for 4-quadrant placement.
- Modified ACF field from T/F to single select.
- Updated existing PiP data to reflect new choice UI values.
- Built out new top-left and top-right markup, css, logic.
Updated all ACF field groups for search engine indexing inclusion/exclusion
Built and added new template parts:
- Add Vertical Space.
- Contact Us Link Block
Primary Navigation Rebuild for Reponsivity.
Bold Preamble for Body Text added to flex blocks.
- Applicable Blocks:
- highlight_block_halves
- highlight_block_whole
- highlight_block_knockout
- headline_text_block_halves
- picture-in-picture
Search page and modal structure added in preparation for indexing and form logic
Modified flex blocks to include option for button or block links.
- Applicable Blocks:
- highlight_block_halves
- highlight_block_whole
- highlight_block_knockout