Spiralist Footer - Source Excerpt 01
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/footer.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/themes/spiralist/footer.php
<?php
if (!defined('ABSPATH')) {
exit;
}
$current_locale = function_exists('spiralist_get_current_locale_tag') ? spiralist_get_current_locale_tag() : 'en-us';
$language_url = static function (string $url) use ($current_locale): string {
return function_exists('spiralist_get_language_prefixed_url')
? spiralist_get_language_prefixed_url($url, $current_locale)
: $url;
};
$render_ui_label = static function (string $key, string $fallback): string {
return function_exists('spiralist_render_ui_label')
? spiralist_render_ui_label($key, $fallback)
: esc_html($fallback);
};
$ui_text = static function (string $key, string $fallback): string {
return function_exists('spiralist_get_ui_text')
? spiralist_get_ui_text($key, $fallback)
: $fallback;
};
$localize_links = static function (array $items) use ($language_url): array {
return array_values(array_filter(array_map(
static function (array $item) use ($language_url): array {
if (!empty($item['url']) && is_string($item['url'])) {
$item['url'] = $language_url($item['url']);
}
return $item;
},
$items
), static function (array $item): bool {
return !empty($item['url']) && is_string($item['url']);
}));
};
$publication_context = function_exists('spiralist_get_current_publication_context')
? spiralist_get_current_publication_context()
: [];
if (empty($publication_context) && function_exists('spiralist_get_publication_context')) {
$publication_context = spiralist_get_publication_context(
null,
[
'home' => true,
'language' => $current_locale,
]
);
}
$publication_links = array_values(array_filter([
[
'labelKey' => 'ui.publication.human_surface',
'label' => 'Human Surface',
'url' => (string) ($publication_context['humanUrl'] ?? ''),
],
], static function (array $item): bool {
return $item['url'] !== '';
}));
$publication_inspector = function_exists('spiralist_get_publication_inspector_payload')
? spiralist_get_publication_inspector_payload(
$publication_context['post'] ?? null,
[
'home' => !empty($publication_context['isHome']),
'language' => (string) ($publication_context['language'] ?? $current_locale),
]
)
: [];
$privacy_policy_url = function_exists('get_privacy_policy_url') ? trim((string) get_privacy_policy_url()) : '';
if ($privacy_policy_url !== '') {
$privacy_policy_url = $language_url($privacy_policy_url);
}
$footer_legal_links = function_exists('spiralist_get_footer_legal_links')
? $localize_links(spiralist_get_footer_legal_links())
: [];
$participation_links = is_user_logged_in()
? $localize_links([
[
'labelKey' => 'ui.nav.dashboard',
'label' => 'Dashboard',
'url' => spiralist_get_dashboard_url(),
],
[
'labelKey' => 'ui.nav.account_settings',
'label' => 'Account Settings',
'url' => spiralist_get_account_settings_url(),
],
[
'label' => 'AI Access',
'labelKey' => 'ui.nav.ai_access',
'url' => spiralist_get_ai_access_url(),
],
])
: $localize_links([
[
'labelKey' => 'ui.cta.become_spiralist',
'label' => 'Sign Up',
'url' => spiralist_get_signup_url(),
],
[
'labelKey' => 'ui.nav.login',
'label' => 'Log In',
'url' => spiralist_get_login_url(),
],
[
'labelKey' => 'ui.nav.ai_access',
'label' => 'AI Access',
'url' => spiralist_get_ai_access_url(),
],
]);
if (is_user_logged_in()) {
$participation_links[] = [
'labelKey' => 'ui.nav.log_out',
'label' => 'Log Out',
'url' => spiralist_get_logout_url(),
];
}
$human_link_groups = [
[
'titleKey' => 'footer.group.site',
'title' => 'Site',
'links' => $localize_links([
['labelKey' => 'ui.nav.home', 'label' => 'Home', 'url' => home_url('/')],
['labelKey' => 'ui.nav.study_surface', 'label' => 'Study Surface', 'url' => function_exists('spiralist_get_study_page_url') ? spiralist_get_study_page_url() : home_url('/study/')],
['labelKey' => 'ui.nav.manuscript', 'label' => 'Manuscript', 'url' => spiralist_get_manuscript_page_url()],
['labelKey' => 'ui.nav.gallery', 'label' => 'Image Codex', 'url' => spiralist_get_gallery_page_url()],
['labelKey' => 'ui.nav.contact', 'label' => 'Contact', 'url' => home_url('/contact/')],
]),
],
[
'titleKey' => 'footer.group.practice',
'title' => 'Practice',
'links' => $localize_links([
['labelKey' => 'ui.cta.run_prompt', 'label' => 'Build a Prompt', 'url' => function_exists('spiralist_get_run_prompt_page_url') ? spiralist_get_run_prompt_page_url() : home_url('/prompt-generator/')],
['labelKey' => 'ui.nav.ai_agent_setup_wizard', 'label' => 'Agent Setup Wizard', 'url' => function_exists('spiralist_get_ai_agent_setup_wizard_url') ? spiralist_get_ai_agent_setup_wizard_url() : home_url('/ai-agent-setup-wizard/')],
['labelKey' => 'ui.nav.prompts', 'label' => 'Prompt Library', 'url' => spiralist_get_prompts_page_url()],
['labelKey' => 'ui.cta.open_workspace', 'label' => 'Open Workspace', 'url' => spiralist_get_workspace_url()],
]),
],
[
'titleKey' => 'footer.group.reference',
'title' => 'Reference',
'links' => $localize_links([
['labelKey' => 'ui.nav.system', 'label' => 'System', 'url' => spiralist_get_system_url()],
['labelKey' => 'ui.nav.ai_spiralism', 'label' => 'AI Spiralism', 'url' => function_exists('spiralist_get_ai_spiralism_url') ? spiralist_get_ai_spiralism_url() : home_url('/ai-spiralism/')],
['labelKey' => 'ui.nav.symbols', 'label' => 'Symbols', 'url' => spiralist_get_symbols_page_url()],
['labelKey' => 'ui.nav.reports', 'label' => 'Reports', 'url' => function_exists('spiralist_get_reports_url') ? spiralist_get_reports_url() : home_url('/reports/')],
]),
],
[
'titleKey' => 'footer.group.account',
'title' => 'Account',
'links' => $participation_links,
],
];
$machine_link_groups = [
[
'titleKey' => 'footer.group.page_formats',
'title' => 'Page Formats',
'links' => $publication_links,
],
[
'titleKey' => 'footer.group.site_apis',
'title' => 'Site APIs',
'links' => array_values(array_filter([
[
'labelKey' => 'ui.nav.builder_hub',
'label' => 'Builder Hub',
'url' => function_exists('spiralist_get_builders_page_url') ? spiralist_get_builders_page_url() : home_url('/builders/'),
],
[
'labelKey' => 'ui.api.examples',
'label' => 'API Examples',
'url' => function_exists('spiralist_get_api_examples_url') ? spiralist_get_api_examples_url() : '',
],
[
'labelKey' => 'ui.api.ai_manifest',
'label' => 'AI Manifest',
'url' => home_url('/ai.json'),
],
[
'labelKey' => 'ui.api.ai_route_manifest',
'label' => 'AI Route Manifest',
'url' => home_url('/ai-router.json'),
],
[
'labelKey' => 'ui.api.persona_manifest',
'label' => 'Persona Manifest',
'url' => home_url('/persona-manifest.json'),
],
[
'labelKey' => 'ui.api.safety_boundaries',
'label' => 'Safety Boundaries',
'url' => home_url('/safety-boundaries.json'),
],
[
'labelKey' => 'ui.api.site_machine_document',
'label' => 'Site Machine Document',
'url' => spiralist_get_site_uai_url(),
],
[
'labelKey' => 'ui.api.symbol_api',
'label' => 'Symbol API',
'url' => spiralist_get_symbols_api_url(),
],
[
'labelKey' => 'ui.api.prompts_api',
'label' => 'Prompts API',
'url' => spiralist_get_prompts_api_url(),
],
[
'labelKey' => 'ui.api.axioms_api',
'label' => 'Axioms API',
'url' => spiralist_get_axioms_api_url(),
],
[
'labelKey' => 'ui.api.kernel_api',