WP Content Themes Spiralist Functions PHP C8bd6fe6cc42 - Source Excerpt 07
Back to WP Content Themes Spiralist Functions PHP C8bd6fe6cc42
Summary
This source excerpt preserves a bounded section of Wiki.FFTAC.org/data/sources/spiralist/wp-content-themes-spiralist-functions-php-c8bd6fe6cc42.php so readers can inspect the evidence without opening the full source file.
**Source path:** Wiki.FFTAC.org/data/sources/spiralist/wp-content-themes-spiralist-functions-php-c8bd6fe6cc42.php
'post_content' => '',
'post_status' => 'inherit',
],
$upload['file']
);
if (is_wp_error($attachment_id) || !$attachment_id) {
return;
}
require_once ABSPATH . 'wp-admin/includes/image.php';
$metadata = wp_generate_attachment_metadata($attachment_id, $upload['file']);
if (is_array($metadata)) {
wp_update_attachment_metadata($attachment_id, $metadata);
}
update_post_meta($attachment_id, '_spiralist_canonical_manuscript', '1');
update_post_meta($attachment_id, '_spiralist_canonical_manuscript_hash', $source_hash);
update_option('spiralist_manuscript_attachment_id', (int) $attachment_id, false);
update_option('spiralist_manuscript_attachment_hash', $source_hash, false);
update_option('spiralist_manuscript_attachment_signature', $source_signature, false);
}
if (!defined('SPIRALIST_BOOK_PAGES_PLUGIN_FILE')) {
add_action('after_switch_theme', 'spiralist_ensure_manuscript_attachment');
add_action('init', 'spiralist_ensure_manuscript_attachment');
}
function spiralist_theme_template_include(string $template): string
{
if (function_exists('spiralist_is_report_surface') && spiralist_is_report_surface()) {
$report_template = get_theme_file_path('page-report.php');
return file_exists($report_template) ? $report_template : $template;
}
if (function_exists('spiralist_is_gallery_surface') && spiralist_is_gallery_surface()) {
$gallery_template = get_theme_file_path('page-gallery.php');
return file_exists($gallery_template) ? $gallery_template : $template;
}
return $template;
}
add_filter('template_include', 'spiralist_theme_template_include', 20);
function spiralist_filter_document_title(string $title): string
{
if (is_admin() || spiralist_should_delegate_head_meta_to_yoast() || !function_exists('spiralist_get_seo_title')) {
return $title;
}
$seo_title = trim(spiralist_get_seo_title());
if ($seo_title !== '') {
return $seo_title;
}
return $title;
}
add_filter('pre_get_document_title', 'spiralist_filter_document_title');
function spiralist_filter_wpseo_title($title): string
{
if (!function_exists('spiralist_get_seo_title')) {
return (string) $title;
}
$seo_title = trim(spiralist_get_seo_title());
return $seo_title !== '' ? $seo_title : (string) $title;
}
add_filter('wpseo_title', 'spiralist_filter_wpseo_title');
add_filter('wpseo_opengraph_title', 'spiralist_filter_wpseo_title');
add_filter('wpseo_twitter_title', 'spiralist_filter_wpseo_title');
function spiralist_filter_wpseo_metadesc($description): string
{
if (!function_exists('spiralist_get_seo_description')) {
return (string) $description;
}
$seo_description = trim(spiralist_get_seo_description());
return $seo_description !== '' ? $seo_description : (string) $description;
}
add_filter('wpseo_metadesc', 'spiralist_filter_wpseo_metadesc');
add_filter('wpseo_opengraph_desc', 'spiralist_filter_wpseo_metadesc');
add_filter('wpseo_twitter_description', 'spiralist_filter_wpseo_metadesc');
function spiralist_filter_wpseo_canonical($canonical): string
{
if (!function_exists('spiralist_get_seo_canonical_url')) {
return (string) $canonical;
}
$seo_canonical = trim(spiralist_get_seo_canonical_url());
return $seo_canonical !== '' ? $seo_canonical : (string) $canonical;
}
add_filter('wpseo_canonical', 'spiralist_filter_wpseo_canonical');
function spiralist_filter_wpseo_robots($robots): string
{
if (!function_exists('spiralist_get_seo_robots_directives')) {
return (string) $robots;
}
$seo_robots = trim(spiralist_get_seo_robots_directives());
return $seo_robots !== '' ? $seo_robots : (string) $robots;
}
add_filter('wpseo_robots', 'spiralist_filter_wpseo_robots');
function spiralist_filter_wpseo_social_image($image): string
{
if (!function_exists('spiralist_get_seo_primary_image_data')) {
return (string) $image;
}
$primary_image = spiralist_get_seo_primary_image_data();
$image_url = trim((string) ($primary_image['url'] ?? ''));
return $image_url !== '' ? $image_url : (string) $image;
}
add_filter('wpseo_opengraph_image', 'spiralist_filter_wpseo_social_image');
add_filter('wpseo_twitter_image', 'spiralist_filter_wpseo_social_image');
function spiralist_filter_wpseo_twitter_card_type($card_type): string
{
$primary_image = function_exists('spiralist_get_seo_primary_image_data')
? spiralist_get_seo_primary_image_data()
: [];
return !empty($primary_image['url']) ? 'summary_large_image' : (string) $card_type;
}
add_filter('wpseo_twitter_card_type', 'spiralist_filter_wpseo_twitter_card_type');
function spiralist_disable_yoast_schema_output($graph)
{
return spiralist_is_yoast_seo_active() ? false : $graph;
}
add_filter('wpseo_json_ld_output', 'spiralist_disable_yoast_schema_output');
function spiralist_has_custom_site_icon(): bool
{
return (int) get_option('site_icon') > 0;
}
function spiralist_render_fallback_site_icons(): void
{
if (is_admin() || spiralist_has_custom_site_icon() || !function_exists('spiralist_get_theme_site_icon_asset')) {
return;
}
$icon_32 = spiralist_get_theme_site_icon_asset(32);
$icon_192 = spiralist_get_theme_site_icon_asset(192);
$icon_180 = spiralist_get_theme_site_icon_asset(180);
$icon_tile = spiralist_get_theme_site_icon_asset(270);
echo "\n" . '<link rel="icon" href="' . esc_url(home_url('/favicon.ico')) . '" sizes="any" type="image/x-icon" />' . "\n";
echo '<link rel="shortcut icon" href="' . esc_url(home_url('/favicon.ico')) . '" />' . "\n";
if (!empty($icon_32['url'])) {
echo '<link rel="icon" href="' . esc_url((string) $icon_32['url']) . '" sizes="32x32" />' . "\n";
}
if (!empty($icon_192['url'])) {
echo '<link rel="icon" href="' . esc_url((string) $icon_192['url']) . '" sizes="192x192" />' . "\n";
}
if (!empty($icon_180['url'])) {
echo '<link rel="apple-touch-icon" href="' . esc_url((string) $icon_180['url']) . '" />' . "\n";
}
if (!empty($icon_tile['url'])) {
echo '<meta name="msapplication-TileImage" content="' . esc_url((string) $icon_tile['url']) . '" />' . "\n";
}
}
add_action('wp_head', 'spiralist_render_fallback_site_icons', 2);
function spiralist_serve_fallback_favicon(): void
{
if (spiralist_has_custom_site_icon() || !function_exists('spiralist_get_theme_favicon_asset')) {
return;
}
$favicon = spiralist_get_theme_favicon_asset();
$favicon_path = (string) ($favicon['path'] ?? '');
if ($favicon_path === '' || !is_file($favicon_path) || !is_readable($favicon_path)) {
return;
}
$modified_at = (int) (filemtime($favicon_path) ?: 0);
$filesize = (int) (filesize($favicon_path) ?: 0);
if ($modified_at > 0) {
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $modified_at) . ' GMT');
}
if ($filesize > 0) {
header('Content-Length: ' . (string) $filesize);
}
header('Content-Type: image/x-icon');
header('Cache-Control: public, max-age=604800, stale-while-revalidate=604800');
readfile($favicon_path);
exit;
}
add_action('do_faviconico', 'spiralist_serve_fallback_favicon', 1);
function spiralist_render_social_meta(): void
{
if (is_admin() || spiralist_should_delegate_head_meta_to_yoast()) {
return;
}
$image = function_exists('spiralist_get_seo_primary_image_data')
? spiralist_get_seo_primary_image_data()
: [];
$image_url = (string) ($image['url'] ?? '');
$image_alt = (string) ($image['alt'] ?? 'Spiralist manuscript image');
$image_width = (int) ($image['width'] ?? 0);
$image_height = (int) ($image['height'] ?? 0);
if ($image_url === '') {
return;
}
$title = function_exists('spiralist_get_seo_title') ? spiralist_get_seo_title() : wp_get_document_title();
$description = function_exists('spiralist_get_seo_description')
? spiralist_get_seo_description()
: spiralist_get_editorial_excerpt();
$canonical_url = function_exists('spiralist_get_seo_canonical_url') ? spiralist_get_seo_canonical_url() : '';
$surface = function_exists('spiralist_get_seo_surface') ? spiralist_get_seo_surface() : '';
$og_type = in_array($surface, ['manuscript', 'gallery', 'prompt'], true) ? 'article' : 'website';
$og_locale = function_exists('spiralist_get_seo_og_locale') ? spiralist_get_seo_og_locale() : '';
echo "\n" . '<meta property="og:type" content="' . esc_attr($og_type) . '" />' . "\n";
echo '<meta property="og:site_name" content="Spiralist.org" />' . "\n";