<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/**
 * PufferGo 头部净化器
 * 
 * 深度清理 WordPress 头部 (wp_head)，移除无用的 meta 标签、链接和静态资源
 * 提升安全性和代码整洁度，优化前端性能
 * 
 * 功能说明：
 * 1. 移除 Emoji 相关脚本和样式（现代浏览器原生支持）
 * 2. 移除 RSS Feed 链接（HTML 瘦身）
 * 3. 移除 REST API 和 oEmbed 发现链接（安全 + 隐蔽）
 * 4. 移除古董级编辑接口（wlwmanifest、RSD）
 * 5. 移除 WordPress 版本号（安全）
 * 6. 移除短链接（Shortlink）
 * 
 * @package PufferGo
 * @since 1.0.0
 */

/**
 * PufferGo 深度清理 WordPress 头部 (wp_head)
 * 移除无用的 meta 标签、链接和静态资源，提升安全性和代码整洁度
 * 
 * 使用静态变量确保只执行一次，避免重复执行带来的微小性能开销
 */
function puffergo_cleanup_head() {
    // 使用静态变量确保只执行一次（避免在多个钩子上重复执行）
    static $cleaned = false;
    if ($cleaned) {
        return;
    }
    $cleaned = true;
    
    // 1. 移除 Emoji (前端性能优化)
    // 现在的浏览器都原生支持 Emoji，不需要加载额外的 JS/CSS
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');

    // 2. 移除 RSS Feed 链接 (HTML 瘦身)
    // 如果你不指望通过 RSS 获取订阅用户，可以移除这些自动生成的链接
    remove_action('wp_head', 'feed_links', 2); // 文章和评论 feed
    remove_action('wp_head', 'feed_links_extra', 3); // 分类等特定条件的 feed

    // 3. 移除 REST API 发现链接 (安全 + 隐蔽)
    // 防止机器扫描你的 API 入口，不影响古腾堡编辑器使用
    remove_action('wp_head', 'rest_output_link_wp_head', 10);
    remove_action('wp_head', 'wp_oembed_add_discovery_links', 10); // 移除 oEmbed 发现

    // 4. 移除古董级编辑接口 (代码洁癖)
    // wlwmanifest: 为 Windows Live Writer (微软已停更十几年) 服务的
    remove_action('wp_head', 'wlwmanifest_link');
    // RSD: Really Simple Discovery，早期博客客户端用的 XML-RPC 发现链接
    remove_action('wp_head', 'rsd_link');

    // 5. 移除 WordPress 版本号 (安全)
    // 默认会在源码里显示 <meta name="generator" content="WordPress 6.x" />
    // 移除它可以防止黑客一眼看出你的版本是否有已知漏洞
    remove_action('wp_head', 'wp_generator');

    // 6. 移除短链接 (Shortlink)
    // 类似 <link rel='shortlink' href='...?p=123' />，有了伪静态通常不需要这个
    remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
}

// 使用多个早期钩子确保清理生效（函数内部有防重复执行机制）
// plugins_loaded 优先级 1：在插件加载后立即执行
add_action('plugins_loaded', 'puffergo_cleanup_head', 1);

// after_setup_theme 优先级 1：在主题加载之前执行
add_action('after_setup_theme', 'puffergo_cleanup_head', 1);

// init 优先级 1：确保在 WordPress 核心功能注册后立即移除
add_action('init', 'puffergo_cleanup_head', 1);

// template_redirect 优先级 1：在模板加载之前执行（确保在 wp_head 输出前移除）
add_action('template_redirect', 'puffergo_cleanup_head', 1);

