Class Uai1 Head Links
**Site relevance:** Spiralist.org
**Memory type:** plugin source memory
**Source path:** Spiralist/wp-content/plugins/uai-1-wordpress/includes/class-uai1-head-links.php
**Size:** 1.4 KB
Summary
if (!defined('ABSPATH'))
Source Preview
This source file is short enough to preview directly on its source-memory page.
<?php
if (!defined('ABSPATH')) {
exit;
}
class UAI1_Head_Links
{
private const UAIX_CONTENT_TYPE = 'application/vnd.uaix.uai+json';
public static function render_alternate_link(): void
{
$links = self::get_uaix_links();
echo "\n" . '<link rel="service" type="' . esc_attr(self::UAIX_CONTENT_TYPE) . '" href="' . esc_url($links['discovery']) . '" />' . "\n";
echo '<link rel="alternate" type="' . esc_attr(self::UAIX_CONTENT_TYPE) . '" href="' . esc_url($links['capability']) . '" />' . "\n";
echo '<meta name="uaix-uai-1" content="1.0" />' . "\n";
}
public static function send_alternate_header(): void
{
if (is_admin() || wp_doing_ajax() || (defined('REST_REQUEST') && REST_REQUEST)) {
return;
}
$links = self::get_uaix_links();
header('Link: <' . esc_url_raw($links['discovery']) . '>; rel="service"; type="' . self::UAIX_CONTENT_TYPE . '"', false);
header('Link: <' . esc_url_raw($links['capability']) . '>; rel="alternate"; type="' . self::UAIX_CONTENT_TYPE . '"', false);
header('X-UAI-1: 1.0', false);
header('X-UAIX-Discovery: ' . esc_url_raw($links['discovery']), false);
}
private static function get_uaix_links(): array
{
return [
'discovery' => rest_url('uaix/v1/discovery'),
'capability' => rest_url('uaix/v1/capability'),
];
}
}