<?php
/**
 * フクラク WordPress functions.php 追記コード
 *
 * 既存の functions.php の末尾に追記してください。
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 含まれる内容：
 *   1. Google Fonts 読み込み
 *   2. HubSpot フォーム JS の非同期読み込み
 *   3. HubSpot フォームの自動初期化スクリプト
 *   4. LP・お問い合わせページでSWELLのサイドバー無効化
 *   5. メニューへの「お問い合わせ」登録ヘルパー
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 */

/* ──────────────────────────────────────────
   1. Google Fonts 読み込み
   Noto Sans JP（日本語）＋ DM Sans（英数字）
   ────────────────────────────────────────── */
add_action( 'wp_enqueue_scripts', 'fukuraku_enqueue_fonts' );
function fukuraku_enqueue_fonts() {
    wp_enqueue_style(
        'fukuraku-google-fonts',
        'https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&family=DM+Sans:wght@400;500;700&display=swap',
        [],
        null
    );
}

/* ──────────────────────────────────────────
   2. HubSpot フォーム JS の非同期読み込み
   LPページとお問い合わせページのみに限定して読み込む。
   全ページ読み込みはパフォーマンスに影響するため。
   ────────────────────────────────────────── */
add_action( 'wp_enqueue_scripts', 'fukuraku_enqueue_hubspot' );
function fukuraku_enqueue_hubspot() {
    // LPテンプレートまたはお問い合わせテンプレートを使用しているページのみ
    if ( is_page_template( 'fukuraku-lp.php' ) || is_page_template( 'fukuraku-contact.php' ) ) {
        wp_enqueue_script(
            'hubspot-forms',
            'https://js-na2.hsforms.net/forms/embed/242958970.js',
            [],
            null,
            false // headで読み込む（hs-form-frame方式）
        );
        wp_script_add_data( 'hubspot-forms', 'defer', true );
    }
}

/* ──────────────────────────────────────────
   3. HubSpot CV送信スクリプト
   hs-form-frame 方式では初期化は不要。
   フォーム送信イベントをGA4/GTMに送信するのみ。
   ────────────────────────────────────────── */
/* hs-form-frame 方式ではJSによる初期化は不要。
   HubSpotのスクリプトが data-portal-id と data-form-id を
   自動で読み取り、フォームを描画します。
   ただし、GA4/GTMへのCV送信のみ別途対応します。 */
add_action( 'wp_footer', 'fukuraku_hubspot_cv_tracking' );
function fukuraku_hubspot_cv_tracking() {
    if ( ! is_page_template( 'fukuraku-lp.php' ) && ! is_page_template( 'fukuraku-contact.php' ) ) {
        return;
    }
    ?>
    <script>
    /* HubSpotフォーム送信イベントをGA4/GTMに送信 */
    window.addEventListener('message', function(event) {
        if (event.data && event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmit') {
            if (typeof dataLayer !== 'undefined') {
                dataLayer.push({
                    'event': 'fukuraku_form_submit',
                    'form_id': event.data.id,
                    'page_location': window.location.href
                });
            }
        }
    });
    </script>
    <?php
}

/* ──────────────────────────────────────────
   4. LPページでSWELLのサイドバー・パンくずを無効化
   SWELLのフィルターフックを使って制御する。
   ────────────────────────────────────────── */

// LP・お問い合わせページでサイドバーを非表示
add_filter( 'swell_is_sidebar', 'fukuraku_disable_sidebar' );
function fukuraku_disable_sidebar( $is_sidebar ) {
    if ( is_page_template( 'fukuraku-lp.php' ) || is_page_template( 'fukuraku-contact.php' ) ) {
        return false;
    }
    return $is_sidebar;
}

// LPページでSWELLのパンくずを非表示
add_filter( 'swell_is_breadcrumb', 'fukuraku_disable_breadcrumb' );
function fukuraku_disable_breadcrumb( $is_breadcrumb ) {
    if ( is_page_template( 'fukuraku-lp.php' ) ) {
        return false;
    }
    return $is_breadcrumb;
}

// LPページでSWELLの記事タイトルを非表示
add_filter( 'swell_is_title', 'fukuraku_disable_title' );
function fukuraku_disable_title( $is_title ) {
    if ( is_page_template( 'fukuraku-lp.php' ) ) {
        return false;
    }
    return $is_title;
}

/* ──────────────────────────────────────────
   5. LP・お問い合わせページでのコンテンツ幅フルワイド化
   SWELLのレイアウトをフルワイドに設定する
   ────────────────────────────────────────── */
add_filter( 'body_class', 'fukuraku_add_fullwidth_class' );
function fukuraku_add_fullwidth_class( $classes ) {
    if ( is_page_template( 'fukuraku-lp.php' ) || is_page_template( 'fukuraku-contact.php' ) ) {
        $classes[] = 'is-fullwidth';
        $classes[] = 'no-sidebar';
    }
    return $classes;
}

/* ──────────────────────────────────────────
   6. ナビゲーションメニューの登録
   ダッシュボード > 外観 > メニュー で「お問い合わせ」を追加できるようにする。
   すでに登録済みの場合は不要。
   ────────────────────────────────────────── */
add_action( 'after_setup_theme', 'fukuraku_register_nav_menus' );
function fukuraku_register_nav_menus() {
    register_nav_menus( [
        'fukuraku-header' => 'フクラク ヘッダーナビ',
        'fukuraku-footer' => 'フクラク フッターリンク',
    ] );
}