Seo Schema - Source Excerpt 05
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 (!empty($asset['url'])) {
return [
'url' => (string) $asset['url'],
'alt' => (string) ($asset['title'] ?? 'Spiralist gallery image'),
'width' => (int) ($asset['width'] ?? 0),
'height' => (int) ($asset['height'] ?? 0),
];
}
}
if ($surface === 'manuscript') {
$page = (array) ($manuscript['page'] ?? []);
if (!empty($page['url'])) {
return [
'url' => (string) $page['url'],
'alt' => (string) ($page['title'] ?? 'Spiralism manuscript folio'),
'width' => (int) ($page['width'] ?? 0),
'height' => (int) ($page['height'] ?? 0),
];
}
}
if (is_singular()) {
$post = get_queried_object();
if ($post instanceof WP_Post) {
$thumbnail_id = (int) get_post_thumbnail_id($post);
if ($thumbnail_id > 0) {
$thumbnail = wp_get_attachment_image_src($thumbnail_id, 'full');
if (is_array($thumbnail) && !empty($thumbnail[0])) {
$thumbnail_alt = trim((string) get_post_meta($thumbnail_id, '_wp_attachment_image_alt', true));
if ($thumbnail_alt === '') {
$thumbnail_alt = trim(wp_strip_all_tags((string) $post->post_title));
}
return [
'url' => (string) $thumbnail[0],
'alt' => $thumbnail_alt !== '' ? $thumbnail_alt : spiralist_get_seo_site_name(),
'width' => (int) ($thumbnail[1] ?? 0),
'height' => (int) ($thumbnail[2] ?? 0),
];
}
}
}
}
$default_preview = function_exists('spiralist_get_default_social_preview_asset')
? spiralist_get_default_social_preview_asset()
: [];
if (!empty($default_preview['url'])) {
return [
'url' => (string) $default_preview['url'],
'alt' => (string) ($default_preview['alt'] ?? 'Spiralist.org preview'),
'width' => (int) ($default_preview['width'] ?? 0),
'height' => (int) ($default_preview['height'] ?? 0),
];
}
if (is_front_page() || is_home()) {
$image_url = function_exists('spiralist_get_homepage_preview_url')
? spiralist_get_homepage_preview_url()
: '';
if ($image_url !== '') {
return [
'url' => $image_url,
'alt' => 'Spiralist.org preview',
'width' => 0,
'height' => 0,
];
}
}
$image_url = function_exists('spiralist_get_manuscript_preview_url')
? spiralist_get_manuscript_preview_url()
: '';
if ($image_url === '') {
return [];
}
return [
'url' => $image_url,
'alt' => 'Spiralist manuscript image',
'width' => 0,
'height' => 0,
];
});
}
function spiralist_schema_id(string $fragment): string
{
return untrailingslashit(home_url('/')) . '/#' . ltrim($fragment, '#');
}
function spiralist_schema_page_id(string $fragment): string
{
return untrailingslashit(spiralist_get_seo_canonical_url()) . '#' . ltrim($fragment, '#');
}
function spiralist_schema_url_fragment_id(string $url, string $fragment): string
{
$normalized_url = trim($url);
$normalized_fragment = ltrim(trim($fragment), '#');
if ($normalized_url === '' || $normalized_fragment === '') {
return spiralist_schema_page_id($normalized_fragment !== '' ? $normalized_fragment : 'entity');
}
return untrailingslashit($normalized_url) . '/#' . $normalized_fragment;
}
function spiralist_schema_manuscript_book_id(): string
{
$overview_url = function_exists('spiralist_book_pages_get_manuscript_overview_url')
? (string) spiralist_book_pages_get_manuscript_overview_url()
: '';
return spiralist_schema_url_fragment_id($overview_url, 'manuscript-book');
}
function spiralist_schema_manuscript_section_id(array $section = []): string
{
$section_url = trim((string) ($section['url'] ?? ''));
$section_slug = sanitize_title((string) ($section['slug'] ?? ''));
if ($section_url === '' && $section_slug !== '' && function_exists('spiralist_book_pages_get_manuscript_section_url')) {
$section_url = (string) spiralist_book_pages_get_manuscript_section_url($section_slug);
}
return spiralist_schema_url_fragment_id($section_url, 'manuscript-section');
}
function spiralist_schema_manuscript_folio_id(array $page = []): string
{
$folio_url = trim((string) ($page['route_url'] ?? ''));
$folio_slug = sanitize_title((string) ($page['slug'] ?? ''));
if ($folio_url === '' && $folio_slug !== '' && function_exists('spiralist_book_pages_get_manuscript_folio_url')) {
$folio_url = (string) spiralist_book_pages_get_manuscript_folio_url($page);
}
return spiralist_schema_url_fragment_id($folio_url, 'manuscript-folio');
}
function spiralist_schema_manuscript_folio_image_id(array $page = []): string
{
$folio_url = trim((string) ($page['route_url'] ?? ''));
$folio_slug = sanitize_title((string) ($page['slug'] ?? ''));
if ($folio_url === '' && $folio_slug !== '' && function_exists('spiralist_book_pages_get_manuscript_folio_url')) {
$folio_url = (string) spiralist_book_pages_get_manuscript_folio_url($page);
}
return spiralist_schema_url_fragment_id($folio_url, 'manuscript-folio-image');
}
function spiralist_schema_reference_ids(array $references): array
{
return array_values(array_map(
static function (array $reference): array {
return ['@id' => (string) ($reference['@id'] ?? '')];
},
array_filter($references, static function (array $reference): bool {
return (string) ($reference['@id'] ?? '') !== '';
})
));
}
function spiralist_schema_organization(): array
{
$image_url = function_exists('spiralist_get_homepage_preview_url')
? spiralist_get_homepage_preview_url()
: '';
return [
'@type' => 'Organization',
'@id' => spiralist_schema_id('organization'),
'name' => 'Spiralist.org',
'url' => home_url('/'),
'description' => 'The human and AI experience layer for Spiralism.',
'image' => $image_url,
'knowsAbout' => [
'Spiralism',
'Spiralist',
'symbolic language',
'human and AI participation',
'machine publication drafts',
],
];
}
function spiralist_schema_website(): array
{
return [
'@type' => 'WebSite',
'@id' => spiralist_schema_id('website'),
'url' => home_url('/'),
'name' => 'Spiralist.org',
'description' => get_bloginfo('description') ?: 'Knowledge Through Spiralism',
'publisher' => [
'@id' => spiralist_schema_id('organization'),
],
'inLanguage' => spiralist_get_seo_language(),
'potentialAction' => [
'@type' => 'SearchAction',
'target' => home_url('/?s={search_term_string}'),
'query-input' => 'required name=search_term_string',
],
];
}
function spiralist_schema_breadcrumbs(): array
{
$canonical = spiralist_get_seo_canonical_url();
$language = function_exists('spiralist_get_current_language_slug')
? spiralist_get_current_language_slug()
: 'en';
$home_url = function_exists('spiralist_get_language_prefixed_url')
? spiralist_get_language_prefixed_url(home_url('/'), $language)
: home_url('/');
$items = [
[
'@type' => 'ListItem',
'position' => 1,
'name' => 'Home',
'item' => $home_url,
],
];
$surface = spiralist_get_seo_surface();
if ($surface === 'manuscript') {
$context = spiralist_get_seo_manuscript_context();
$page = (array) ($context['page'] ?? []);
$section = (array) ($context['section_record'] ?? []);
$requested_folio = (string) ($context['requested_folio'] ?? '');
$requested_section = (string) ($context['requested_section'] ?? '');
$manuscript_url = function_exists('spiralist_book_pages_get_manuscript_overview_url')