<?php /** * Template Name: Atlanta Estate Planning: Location Page * * City and county location pages. URL: /estate-planning/{city-slug}/ * * Section register order (Design System §6 — no two adjacent full-width sections * share the same register): * * R5 Hero * R1 SEO Intro * (conditional: hero_secondary_h2 / hero_intro_paragraph) * Credibility Bar (own wrapper — epa-credibility, no register class) * R1 City Narrative (location_intro_heading + location_intro_content) * R5 Stats Bar * (conditional: stat_1_number) * R2 Package / Included (trust package contents + location_package fields) * R1 Process Steps * R2 Attorney Bio * R1 Client Reviews * R2 FAQ * (conditional: faq_items) * R1 Related Pages * R2 Service Area Map (location_county → SVG county map) * R5 Dual CTA * * ACF fields consumed: * hero_eyebrow, hero_headline, hero_subtitle — group_epa_hero * hero_secondary_h2, hero_intro_paragraph — group_epa_hero * location_county, location_city, location_city_name — group_epa_location * location_intro_heading, location_intro_content — group_epa_location * location_package_heading, location_package_intro — group_epa_location * stat_1_number / stat_2 / stat_3 (all fields) — group_epa_stats * faq_items — group_epa_faq * * @package HiveLaw */ get_header(); epa_partial( 'breadcrumbs' ); // ── Hero fields ────────────────────────────────────────────────────────────── $eyebrow = epa_field( 'hero_eyebrow', 'Estate Planning' ); $headline = epa_field( 'hero_headline', get_the_title() ); $subtitle = epa_field( 'hero_subtitle', '' ); // ── Location fields ────────────────────────────────────────────────────────── $city_name = epa_field( 'location_city_name', '' ); // ── Global CTA options ─────────────────────────────────────────────────────── $form_id = (int) epa_option( 'global_form_id', 2 ); // ── LocalBusiness schema — reinforces location relevance for Google ─────────── $post_url = get_permalink(); $page_name = $headline ?: get_the_title(); $location_schema = array( '@context' => 'https://schema.org', '@type' => 'LegalService', 'name' => 'Atlanta Estate Planning', 'url' => $post_url, 'description' => $page_name, 'areaServed' => $city_name ?: get_the_title(), 'address' => array( '@type' => 'PostalAddress', 'addressLocality' => 'Atlanta', 'addressRegion' => 'GA', 'addressCountry' => 'US', ), 'telephone' => epa_option( 'firm_phone', '' ), 'priceRange' => '$$', 'serviceType' => 'Estate Planning', ); echo '<script type="application/ld+json">' . wp_json_encode( $location_schema, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT ) . '</script>' . "\n"; ?> <!-- ===================================================================== HERO — R5 Estate Black ===================================================================== --> <section class="epa-hero epa-hero--with-form"> <div class="epa-hero__content"> <div class="epa-hero__copy"> <p class="epa-hero__eyebrow"><?php echo esc_html( $eyebrow ); ?></p> <h1 class="epa-hero__title"><?php echo esc_html( $headline ); ?></h1> <?php if ( $subtitle ) : ?> <p class="epa-hero__subtitle"><?php echo esc_html( $subtitle ); ?></p> <?php endif; ?> </div> <div class="epa-hero__form-panel" id="hero-form"> <p class="epa-hero__form-title">Find Out Where You Stand</p> <div class="epa-hero__form-rule"></div> <?php echo do_shortcode( '[gravityforms id="' . $form_id . '" title="false" description="false" ajax="true"]' ); ?> </div> </div> </section> <!-- ===================================================================== SEO INTRO — R1 White (conditional) Keyword-rich H2 + intent-aligned paragraph. Populated per-page in ACF. ===================================================================== --> <?php $seo_h2 = epa_field( 'sero_secondary_h2', '' ); $seo_intro = epa_field( 'hero_intro_paragraph', '' ); if ( $seo_h2 || $seo_intro ) : ?> <section class="epa-section epa-seo-intro"> <div class="epa-container epa-container--narrow"> <?php if ( $seo_h2 ) : ?> <h2 class="epa-seo-intro__h2"><?php echo esc_html( $seo_h2 ); ?></h2> <?php endif; ?> <?php if ( $seo_intro ) : ?> <p class="epa-seo-intro__body"><?php echo esc_html( $seo_intro ); ?></p> <?php endif; ?> </div> </section> <?php endif; ?> <!-- ===================================================================== CREDIBILITY BAR — own register wrapper (epa-credibility) ===================================================================== --> <?php epa_partial( 'credibility-bar' ); ?> <!-- ===================================================================== CITY NARRATIVE — R1 White City-specific demographics, assets, and risks. This section makes each location page unique — do not genericize the copy. ===================================================================== --> <?php $city_intro_heading = epa_field( 'location_intro_heading', '' ); $city_intro_content = epa_field( 'location_intro_content', '' ); if ( $city_intro_heading || $city_intro_content ) : ?> <section class="epa-section epa-location-narrative"> <div class="epa-container epa-container--narrow"> <?php if ( $city_intro_heading ) : ?> <h2 class="epa-location-narrative__heading"> <?php echo esc_html( $city_intro_heading ); ?> </h2> <?php endif; ?> <?php if ( $city_intro_content ) : ?> <div class="epa-location-narrative__body epa-prose"> <?php echo apply_filters( 'the_content', $city_intro_content ); ?> </div> <?php endif; ?> </div> </section> <?php endif; ?> <!-- ===================================================================== STATS BAR — R5 Estate Black (conditional) Populate stat_1_number / stat_2_number / stat_3_number via ACF to enable. Recommended defaults: Georgia probate cost, average timeline, average estate value. ===================================================================== --> <?php if ( epa_field( 'stat_1_number' ) ) : ?> <?php epa_partial( 'stats-block' ); ?> <?php endif; ?> <!-- ===================================================================== PACKAGE — R2 Parchment What's included in The Complete Family Trust Package. Heading + intro are editable via ACF (location_package_heading / _intro). Package items are consistent across all city pages (same service, same deliverables). ===================================================================== --> <?php $pkg_heading = epa_field( 'location_package_heading', '' ); $pkg_intro = epa_field( 'location_package_intro', '' ); if ( ! $pkg_heading ) { $pkg_heading = $city_name ? 'What\'s in your ' . $city_name . ' estate plan' : 'What\'s in your estate plan'; } // Default trust package items — consistent deliverables for every city. // Source: The Complete Family Trust Package (Atlanta Estate Planning). $trust_package_items = array( array( 'title' => 'Revocable Living Trust', 'desc' => 'Holds your assets, avoids Georgia probate, and controls exactly who receives what and when. A pour-over will acts as a safety net for anything not yet titled to the trust.', ), array( 'title' => 'Durable Financial Power of Attorney', 'desc' => 'Authorizes a trusted person to manage your bank accounts, real estate, and finances if you become incapacitated — without a court-supervised guardianship.', ), array( 'title' => 'Advance Healthcare Directive', 'desc' => 'Documents your medical wishes and names a healthcare agent to speak for you when you cannot. Covers end-of-life decisions, resuscitation, and treatment preferences.', ), array( 'title' => 'HIPAA Authorization', 'desc' => 'Gives your designated agents legal access to your medical records so they have the information they need to make informed decisions on your behalf.', ), array( 'title' => 'Trust Funding Guidance', 'desc' => 'Step-by-step support to transfer your home, investment accounts, and other assets into the trust. An unfunded trust does not avoid probate — we make sure yours works.', ), array( 'title' => 'One-Year Follow-Up', 'desc' => 'A check-in session at 12 months to update your plan if your family, assets, or wishes have changed. Estate planning is not a one-time event.', ), ); ?> <section class="epa-section epa-section--parchment epa-location-package"> <div class="epa-container epa-container--narrow"> <p class="epa-location-package__eyebrow">The Complete Family Trust Package</p> <h2 class="epa-location-package__heading"><?php echo esc_html( $pkg_heading ); ?></h2> <?php if ( $pkg_intro ) : ?> <p class="epa-location-package__intro"><?php echo esc_html( $pkg_intro ); ?></p> <?php endif; ?> <ul class="epa-location-package__list" role="list"> <?php foreach ( $trust_package_items as $item ) : ?> <li class="epa-location-package__item"> <span class="epa-location-package__check" aria-hidden="true"> <svg viewBox="0 0 20 20" fill="none" width="20" height="20"> <circle cx="10" cy="10" r="9" stroke="#C9A87A" stroke-width="1.5"/> <path d="M6 10.5l2.5 2.5 5-5" stroke="#C9A87A" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/> </svg> </span> <div class="epa-location-package__item-body"> <strong class="epa-location-package__item-title"> <?php echo esc_html( $item['title'] ); ?> </strong> <p class="epa-location-package__item-desc"> <?php echo esc_html( $item['desc'] ); ?> </p> </div> </li> <?php endforeach; ?> </ul> <div class="epa-location-package__cta"> <a href="#hero-form" class="epa-btn epa-btn--primary epa-btn--lg"> Find Out Where You Stand </a> </div> </div> </section> <!-- ===================================================================== PROCESS STEPS — R1 White ===================================================================== --> <?php epa_partial( 'process-block' ); ?> <!-- ===================================================================== ATTORNEY — R2 Parchment (built-in to partial) ===================================================================== --> <?php epa_partial( 'attorney-block' ); ?> <!-- ===================================================================== CLIENT REVIEWS — R1 White ===================================================================== --> <?php epa_partial( 'reviews-block' ); ?> <!-- ===================================================================== FAQ — R2 Parchment (conditional — faq-block includes --parchment) Populate faq_items ACF repeater to enable on a per-city basis. ===================================================================== --> <?php if ( function_exists( 'epa_field' ) && epa_field( 'faq_items' ) ) : ?> <?php epa_partial( 'faq-block' ); ?> <?php endif; ?> <!-- ===================================================================== RELATED PAGES — R1 White ===================================================================== --> <?php epa_partial( 'related-pages' ); ?> <!-- ===================================================================== SERVICE AREA MAP — R2 Parchment Renders the interactive SVG county map + pill links to other cities. Requires location_county ACF field to be populated. Falls back silently. ===================================================================== --> <?php epa_partial( 'city-list' ); ?> <!-- ===================================================================== FORM CTA — R5 Estate Black ===================================================================== --> <?php epa_partial( 'form-cta-block' ); ?> <?php get_footer(); ?>