/ (HTML with JSON-LD, ?format=md for the markdown */ /* twin), listed on /ai-info and in llms.txt. The site is the first */ /* and only distribution channel under the customer's control. */ /* ────────────────────────────────────────────────────────────────── */ define('CITAMI_BRAND_DOCS_OPT', 'citami_brand_docs'); define('CITAMI_BRAND_DOCS_MAX', 20); function citami_brand_docs_sanitize($list) { $out = array(); if (!is_array($list)) { return $out; } foreach ($list as $d) { if (!is_array($d)) continue; $slug = isset($d['slug']) ? sanitize_title((string) $d['slug']) : ''; $title = isset($d['title']) ? sanitize_text_field((string) $d['title']) : ''; $md = isset($d['markdown']) ? (string) $d['markdown'] : ''; if ($slug === '' || $title === '' || trim($md) === '') continue; // Markdown is text: strip tags so a stray ' . "\n" . citami_ai_info_style_tag() . "\n\n
\n" . citami_truth_markdown_to_html($doc['markdown']) . '

' . esc_html(citami_t('Tutte le informazioni verificate su', 'All verified information about')) . ' ' . esc_html($s['name']) . "

\n
\n\n\n"; } // Serve /ai-info// (and ?format=md). Priority 1 like /ai-info itself. add_action('init', function () { if (is_admin() || !citami_truth_ai_info_enabled() || empty($_SERVER['REQUEST_URI'])) { return; } $slug = citami_brand_doc_slug_for_request(esc_url_raw(wp_unslash($_SERVER['REQUEST_URI']))); if ($slug === '') { return; } $docs = citami_brand_docs(); $md = isset($_GET['format']) && sanitize_key(wp_unslash($_GET['format'])) === 'md'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- public read-only document, format switch if (!headers_sent()) { header('Content-Type: ' . ($md ? 'text/markdown' : 'text/html') . '; charset=UTF-8'); header('X-Robots-Tag: index, follow'); } if ($md) { echo $docs[$slug]['markdown'] . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- text/markdown response, not HTML. } else { echo citami_brand_doc_html($docs[$slug]); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- complete HTML document whose every value is escaped where it is built (citami_brand_doc_html). } exit; }, 1); // /ai-info lists the documents; llms.txt too. add_filter('citami_ai_info_extra_sections', function ($sections) { $docs = citami_brand_docs(); if (empty($docs)) { return $sections; } $lines = array('## ' . citami_t('Documenti', 'Documents')); foreach ($docs as $d) { $lines[] = '- ' . $d['title'] . ': ' . citami_brand_doc_url($d['slug']); } $sections = is_array($sections) ? $sections : array(); $sections[] = implode("\n", $lines); return $sections; }); add_filter('citami_llms_extra_sections', function ($sections) { if (!citami_truth_ai_info_enabled()) { return $sections; } $docs = citami_brand_docs(); if (empty($docs)) { return $sections; } $lines = array('## ' . citami_t('Documenti sull\'organizzazione', 'Documents about the organisation')); foreach ($docs as $d) { $lines[] = '- [' . $d['title'] . '](' . citami_brand_doc_url($d['slug']) . ')'; } $sections = is_array($sections) ? $sections : array(); $sections[] = implode("\n", $lines); return $sections; }, 20); // Brand tab: the list, read-only (editing happens on the dashboard). add_action('citami_brand_tab_extra', function () { $docs = citami_brand_docs(); ?>