Skip to content
wiki.fftac.org

Spiralist Search - Source Excerpt 01

Back to Spiralist Search

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/search.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/themes/spiralist/search.php

<?php

if (!defined('ABSPATH')) {
    exit;
}

get_header();

$search_query = trim((string) get_search_query(false));
$search_home_url = function_exists('spiralist_prefix_current_language_url')
    ? spiralist_prefix_current_language_url(home_url('/'))
    : home_url('/');
$groups = function_exists('spiralist_get_grouped_search_results')
    ? spiralist_get_grouped_search_results($search_query, 8)
    : [];
$total_results = array_sum(array_map(
    static function (array $group): int {
        return count((array) ($group['results'] ?? []));
    },
    $groups
));
$suggested_queries = ['first session prompt', 'spiral', 'memory', 'api', 'awakening safety'];
$quick_routes = [
    [
        'label' => 'Build a Prompt',
        'copy' => 'Build or copy one bounded Spiralist prompt before opening deeper dossiers.',
        'url' => function_exists('spiralist_get_run_prompt_page_url') ? spiralist_get_run_prompt_page_url() : home_url('/prompt-generator/'),
    ],
    [
        'label' => 'Prompt Library',
        'copy' => 'Browse official starters, public prompts, and safer intent paths.',
        'url' => function_exists('spiralist_get_prompts_page_url') ? spiralist_get_prompts_page_url() : home_url('/prompts/'),
    ],
    [
        'label' => 'Manuscript',
        'copy' => 'Open the manuscript workstation, folios, and study surface.',
        'url' => function_exists('spiralist_get_manuscript_page_url') ? spiralist_get_manuscript_page_url() : home_url('/manuscript/'),
    ],
    [
        'label' => 'Symbol Atlas',
        'copy' => 'Search visually by meaning, canonical identifier, and transformation path.',
        'url' => function_exists('spiralist_get_symbols_page_url') ? spiralist_get_symbols_page_url() : home_url('/symbols/'),
    ],
    [
        'label' => 'API Examples',
        'copy' => 'Find structured execution, prompt export, and participant routes.',
        'url' => function_exists('spiralist_get_api_examples_url') ? spiralist_get_api_examples_url() : home_url('/api-examples/'),
    ],
];
?>
<main class="spiralist-page spiralist-page--search">
    <section class="spiralist-page-hero spiralist-search-hero">
        <div class="spiralist-shell spiralist-page-hero__content">
            <p class="spiralist-kicker">Grouped Site Search</p>
            <h1><?php echo $search_query !== '' ? esc_html(sprintf('Search results for "%s"', $search_query)) : esc_html('Search Spiralist.org'); ?></h1>
            <p class="spiralist-page-hero__copy">Search prompts, manuscript folios, symbols, research reports, and API examples in one grouped view.</p>
            <form class="spiralist-search-form spiralist-search-form--hero" role="search" method="get" action="<?php echo esc_url($search_home_url); ?>" data-public-form="site-search">
                <label for="spiralist-search-page-input">
                    <span class="screen-reader-text">Search Spiralist.org</span>
                    <input
                        id="spiralist-search-page-input"
                        type="search"
                        name="s"
                        value="<?php echo esc_attr($search_query); ?>"
                        placeholder="Search prompts, folios, symbols, reports, APIs"
                    />
                </label>
                <button class="spiralist-button spiralist-button--primary" type="submit"><?php echo function_exists('spiralist_render_ui_label') ? spiralist_render_ui_label('ui.cta.search', 'Search') : esc_html('Search'); ?></button>
            </form>
        </div>
    </section>

    <section class="spiralist-page-section spiralist-page-section--compact">
        <div class="spiralist-shell">
            <?php if ($search_query === '') : ?>
                <div class="spiralist-section-head">
                    <div>
                        <p class="spiralist-section-tag">Start With a Route</p>
                        <h2 class="spiralist-section-title">Pick a surface or search across all of them.</h2>
                    </div>
                </div>
                <div class="spiralist-access-grid">
                    <?php foreach ($quick_routes as $route) : ?>
                        <a class="spiralist-path-card spiralist-path-card--hub" href="<?php echo esc_url((string) $route['url']); ?>">
                            <span class="spiralist-section-tag"><?php echo esc_html((string) $route['label']); ?></span>
                            <span class="spiralist-card-title"><?php echo esc_html((string) $route['label']); ?></span>
                            <span class="spiralist-muted"><?php echo esc_html((string) $route['copy']); ?></span>
                        </a>
                    <?php endforeach; ?>
                </div>
                <div class="spiralist-search-suggestions" aria-label="Suggested searches">
                    <?php foreach ($suggested_queries as $suggestion) : ?>
                        <a class="spiralist-chip" href="<?php echo esc_url(add_query_arg('s', $suggestion, $search_home_url)); ?>"><?php echo esc_html($suggestion); ?></a>
                    <?php endforeach; ?>
                </div>
            <?php else : ?>
                <div class="spiralist-search-summary" aria-label="Search result counts">
                    <div>
                        <span class="spiralist-section-tag">Results</span>
                        <strong><?php echo esc_html(sprintf('%d grouped match%s', $total_results, $total_results === 1 ? '' : 'es')); ?></strong>
                    </div>
                    <div class="spiralist-search-summary__groups">
                        <?php foreach ($groups as $group) : ?>
                            <?php
                            $group_id = sanitize_html_class((string) ($group['id'] ?? 'group'));
                            $count = count((array) ($group['results'] ?? []));
                            ?>
                            <?php if ($count > 0) : ?>
                                <a href="#search-group-<?php echo esc_attr($group_id); ?>">
                                    <span><?php echo esc_html((string) ($group['label'] ?? 'Results')); ?></span>
                                    <strong><?php echo esc_html((string) $count); ?></strong>
                                </a>
                            <?php else : ?>
                                <div class="spiralist-search-summary__group is-empty">
                                    <span><?php echo esc_html((string) ($group['label'] ?? 'Results')); ?></span>
                                    <strong><?php echo esc_html((string) $count); ?></strong>
                                </div>
                            <?php endif; ?>
                        <?php endforeach; ?>
                    </div>
                </div>

                <?php if ($total_results < 1) : ?>
                    <article class="spiralist-panel spiralist-search-empty">
                        <p class="spiralist-section-tag">No Matches</p>
                        <h2 class="spiralist-section-title">Try a broader term or open a primary surface.</h2>
                        <p class="spiralist-muted">Search works best with practical terms such as prompt, folio, symbol names, memory, API, report topics, or safety.</p>
                        <div class="spiralist-cta-row spiralist-cta-row--start">
                            <?php foreach (array_slice($quick_routes, 0, 3) as $route) : ?>
                                <a class="spiralist-button spiralist-button--secondary" href="<?php echo esc_url((string) $route['url']); ?>"><?php echo esc_html((string) $route['label']); ?></a>
                            <?php endforeach; ?>
                        </div>
                    </article>
                <?php endif; ?>

                <div class="spiralist-search-groups">
                    <?php foreach ($groups as $group) : ?>
                        <?php
                        $results = array_values(array_filter((array) ($group['results'] ?? []), 'is_array'));
                        $group_id = sanitize_html_class((string) ($group['id'] ?? 'group'));
                        if (empty($results)) {
                            continue;
                        }
                        ?>
                        <section class="spiralist-search-group" id="search-group-<?php echo esc_attr($group_id); ?>" aria-labelledby="search-group-title-<?php echo esc_attr($group_id); ?>">
                            <div class="spiralist-section-head">
                                <div>
                                    <p class="spiralist-section-tag"><?php echo esc_html((string) ($group['label'] ?? 'Results')); ?></p>