Skip to content

MeanPug WordPress Developer Challenge - Pugsly-Para - #35

Open
Paramisor wants to merge 1 commit into
masterfrom
Pugsly-Para
Open

MeanPug WordPress Developer Challenge - Pugsly-Para#35
Paramisor wants to merge 1 commit into
masterfrom
Pugsly-Para

Conversation

@Paramisor

Copy link
Copy Markdown

MeanPug WordPress Developer Challenge

Challenge 1: Pugify That Site

Replicated the Airbnb homepage above-the-fold design in WordPress using Elementor Pro.

The layout includes:

  • Announcement bar, header with nav, and tab row
  • Search bar built with a flex container, column borders as dividers, and a styled button using Font Awesome's search icon
  • Full-width hero section with left-aligned text overlay
  • Three-column image row below the hero
  • MeanPug pug placed as the profile avatar in the header nav

Challenge 2: Nothing's Sexier Than a Solid Schema

Before writing any code I read through the existing theme architecture (functions.php, hooks.php, schema.php, locations.php, etc, to understand what content types and field names the theme was already expecting.
This shaped the decisions that followed.

Registered in code so definitions are version-controlled and portable:

CPT Slug Notes
Practice Areas practice-area Hierarchical - supports child topic pages per snippets/content-topics-accordion.php
Attorneys team Slug confirmed via template_functions.php canonical map and widget queries
Offices office Referenced in hooks.php mp_generate_office_schema()
Testimonials testimonials Referenced in hooks, schema functions, and PPC landing page template
Local Pages local Hierarchical for state > city grouping per location navigator widget
Case Results case-result Prominent on both Morgan & Morgan and Milberg reference sites
FAQs faq Supports firm-wide FAQs beyond the per-practice-area schema_faq_items repeater
Awards award Referenced in PPC landing page template awards carousel
Taxonomy Slug Applied To
Practice Area Type practice-area-type team, local, testimonials, case-result, faq
Area Served area-served local, practice-area - referenced in location navigator widget queries
Case Type case-type post

ACF Field Groups

Built field groups for all CPTs with field names matching exactly what the existing theme code calls via get_field():

  • Testimonials - reviewer (group > name), rating
  • Office - address (group > street, street2, city, state, postal_code), geopoint
  • Team - role, email, phone (link), headshot
  • Local - geopoint, content_type (select: Area Served/Landing Page), practice_areas (relationship)
  • Practice Areas - testimonials (relationship), schema_faq_items (group > question, answer)
  • Case Results - settlement_amount, case_type, case_description, case_date, practice_areas
  • FAQ - question, answer, practice_areas (relationship)
  • Awards - image, year, issuing_organization
  • Theme Options - contact_phone, contact_email, contact_main_address, social_profiles, schema_aggregate_rating, ask_a_question_form_id

ACF PRO Notes

Two field types in this implementation require ACF PRO:

  • schema_faq_items on Practice Areas — implemented as a Group in free ACF.

    • In production this should be a Repeater to support multiple FAQ items per practice area, as the existing mp_output_additional_schema_for_post() in hooks.php loops over this field expecting multiple rows.
  • social_profiles on the Options Page — same situation, implemented as a Group, should be a Repeater in production.

Options Page itself requires ACF PRO — the page registration is already scaffolded in inc/settings/all.php, field group is ready to activate once PRO is in place.

Plugins Installed

  • Advanced Custom Fields (free)
  • Yoast SEO
  • Gravity Forms — noted as a dependency per hooks.php GFAPI references, requires license
  • Max Mega Menu

Named the branch Pugsly-Para. Pugsly felt right. Sorry, not sorry.

Installed plugins, registered law firm CPTs and taxonomies in code, and built out ACF field groups for all content types.
@Paramisor
Paramisor requested a review from steinbachr June 16, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant