Seo Schema - Source Excerpt 09
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/themes/spiralist/inc/seo-schema.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/themes/spiralist/inc/seo-schema.php
if ($surface === 'manuscript') {
$context = spiralist_get_seo_manuscript_context();
$page = (array) ($context['page'] ?? []);
$section = (array) ($context['section_record'] ?? []);
$section_records = array_values((array) ($context['section_records'] ?? []));
$requested_folio = (string) ($context['requested_folio'] ?? '');
$requested_section = (string) ($context['requested_section'] ?? '');
$image_url = (string) ($page['url'] ?? '');
$book_id = spiralist_schema_manuscript_book_id();
if ($image_url === '' && function_exists('spiralist_get_manuscript_image_url')) {
$image_url = spiralist_get_manuscript_image_url();
}
if ($requested_section !== '' && $requested_folio === '' && !empty($section)) {
$section_count = max(1, (int) ($section['count'] ?? count((array) ($section['pages'] ?? []))));
$section_first_page = is_array($section['first_page'] ?? null) ? $section['first_page'] : [];
return [
'@type' => 'Chapter',
'@id' => spiralist_schema_manuscript_section_id($section),
'name' => (string) ($section['title'] ?? spiralist_get_seo_title()),
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'isPartOf' => [
'@id' => $book_id,
],
'position' => max(1, (int) ($section_first_page['sequence'] ?? ($page['sequence'] ?? 1))),
'numberOfItems' => $section_count,
'about' => ['Spiralism', 'canonical manuscript', 'manuscript section'],
'citation' => $reference_ids,
];
}
if (!empty($page) && $requested_folio !== '') {
$part_of = [
['@id' => $book_id],
];
if (!empty($section)) {
array_unshift($part_of, ['@id' => spiralist_schema_manuscript_section_id($section)]);
}
return [
'@type' => 'CreativeWork',
'@id' => spiralist_schema_manuscript_folio_id($page),
'name' => (string) ($page['title'] ?? 'Spiralism Manuscript Folio'),
'alternateName' => (string) ($page['label'] ?? ''),
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'position' => (int) ($page['sequence'] ?? 1),
'isPartOf' => $part_of,
'image' => $image_url,
'associatedMedia' => $image_url !== '' ? [
'@type' => 'ImageObject',
'@id' => spiralist_schema_manuscript_folio_image_id($page),
'url' => $image_url,
'contentUrl' => $image_url,
'width' => (int) ($page['width'] ?? 0),
'height' => (int) ($page['height'] ?? 0),
'caption' => (string) ($page['caption'] ?? $page['summary'] ?? ''),
] : '',
'about' => array_values(array_filter([
'Spiralism',
'canonical manuscript',
'manuscript folio',
(string) ($page['section_title'] ?? ''),
], 'strlen')),
'citation' => $reference_ids,
];
}
return [
'@type' => 'Book',
'@id' => $book_id,
'name' => 'Spiralism Canonical Manuscript',
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'image' => $image_url,
'numberOfPages' => max(1, (int) ($context['page_count'] ?? 1)),
'hasPart' => array_map(
static function (array $section_record): array {
return [
'@id' => spiralist_schema_manuscript_section_id($section_record),
];
},
array_filter($section_records, 'is_array')
),
'associatedMedia' => $image_url !== '' ? [
'@type' => 'ImageObject',
'@id' => spiralist_schema_url_fragment_id($canonical, 'manuscript-image'),
'url' => $image_url,
'caption' => 'Full-resolution Spiralism canonical manuscript',
] : '',
'about' => ['Spiralism', 'canonical manuscript', 'symbolic field', 'symbols', 'axioms', 'transformations'],
'citation' => $reference_ids,
];
}
if ($surface === 'gallery') {
$context = spiralist_get_seo_gallery_context();
$asset = (array) ($context['asset'] ?? []);
if (!empty($asset)) {
$content_url = (string) ($asset['url'] ?? '');
$file_extension = strtolower((string) pathinfo((string) ($asset['filename'] ?? ''), PATHINFO_EXTENSION));
$encoding_format = $file_extension !== '' ? 'image/' . ($file_extension === 'jpg' ? 'jpeg' : $file_extension) : '';
return [
'@type' => 'ImageObject',
'@id' => spiralist_schema_page_id('gallery-image'),
'name' => (string) ($asset['title'] ?? spiralist_get_seo_title()),
'description' => $description,
'url' => $canonical,
'contentUrl' => $content_url,
'mainEntityOfPage' => ['@id' => $page_id],
'caption' => (string) ($asset['caption'] ?? $asset['summary'] ?? ''),
'width' => (int) ($asset['width'] ?? 0),
'height' => (int) ($asset['height'] ?? 0),
'encodingFormat' => $encoding_format,
'isPartOf' => [
'@id' => spiralist_schema_page_id('gallery'),
],
'about' => array_values(array_filter([
'Spiralist Image Codex',
(string) ($asset['section_title'] ?? ''),
(string) ($asset['filename'] ?? ''),
], 'strlen')),
];
}
return [
'@type' => 'ImageGallery',
'@id' => spiralist_schema_page_id('gallery'),
'name' => 'Spiralist Image Codex',
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'numberOfItems' => (int) ($context['asset_count'] ?? 0),
'about' => ['book pages', 'image codex', 'full-resolution image archive'],
];
}
if ($surface === 'symbols') {
$set_id = spiralist_schema_page_id('symbol-set');
return [
'@type' => 'DefinedTermSet',
'@id' => $set_id,
'name' => 'Spiralism Symbol Atlas',
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'hasDefinedTerm' => spiralist_schema_symbol_terms($set_id),
'citation' => $reference_ids,
];
}
if ($surface === 'system') {
$set_id = spiralist_schema_page_id('system-terms');
$terms = [
['name' => 'Pattern', 'termCode' => 'spiralist.term.pattern', 'description' => 'The layer where form and relation become inspectable.'],
['name' => 'Perception', 'termCode' => 'spiralist.term.perception', 'description' => 'Awareness participates in pattern by seeing relation.'],
['name' => 'Interpretation', 'termCode' => 'spiralist.term.interpretation', 'description' => 'Meaning is shaped through context and relation.'],
['name' => 'Transformation', 'termCode' => 'spiralist.term.transformation', 'description' => 'Action changes structure and returns altered pattern.'],
['name' => 'Spiralist', 'termCode' => 'spiralist.term.spiralist', 'description' => function_exists('spiralist_get_spiralist_definition') ? spiralist_get_spiralist_definition() : 'A participant in Spiralism.'],
];
return [
'@type' => 'DefinedTermSet',
'@id' => $set_id,
'name' => 'Spiralism System',
'description' => $description,
'url' => $canonical,
'mainEntityOfPage' => ['@id' => $page_id],
'hasDefinedTerm' => array_merge(
array_map(
static function (array $term) use ($set_id): array {
return spiralist_schema_defined_term($term, $set_id);
},
$terms
),
spiralist_schema_symbol_terms($set_id)
),