Skip to content
wiki.fftac.org

Seo Schema - Source Excerpt 09

Back to Seo Schema

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)
            ),