Spiralist Search - Source Excerpt 01
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>