=== Header Junk Remover ===
Contributors: thedeafjoe
Donate link: https://buymeacoffee.com/avocadowebservices
Tags: header, junk, optimization, performance, speed, wordpress
Requires at least: 6.0
Tested up to: 6.8.2
Stable tag: 1.0.2
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Short Description: Remove unnecessary meta tags and junk from your WordPress header for faster load times and cleaner code.

== Description ==

Header Junk Remover is a lightweight, no-settings plugin that cleans up the `<head>` section and headers of your WordPress site.  

It removes outdated tags, redundant links, bloated scripts, and unnecessary headers that WordPress adds by default. The result: cleaner source code, faster page loads, less information leakage, and fewer HTTP requests.

---

**What gets removed (and why it matters):**

- **RSD Link**  
  `remove_action('wp_head', 'rsd_link');`  
  Used for Really Simple Discovery (old remote editing). Not needed anymore.

- **WordPress Generator**  
  `remove_action('wp_head', 'wp_generator');`  
  Hides your WP version. Avoids advertising it to bots/hackers.

- **Feed Links**  
  `remove_action('wp_head', 'feed_links', 2);`  
  `remove_action('wp_head', 'feed_links_extra', 3);`  
  Removes auto-added RSS/Atom feed links. If you don’t use feeds, these are pointless.

- **Relational Links (index, start, parent, adjacent posts)**  
  `remove_action('wp_head', 'index_rel_link');`  
  `remove_action('wp_head', 'start_post_rel_link', 10, 0);`  
  `remove_action('wp_head', 'parent_post_rel_link', 10, 0);`  
  `remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);`  
  `remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);`  
  Removes old “previous/next” link metadata almost no browsers or crawlers use.

- **Windows Live Writer Manifest**  
  `remove_action('wp_head', 'wlwmanifest_link');`  
  Dead tool support. Safe to remove.

- **Shortlink Tags/Headers**  
  `remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);`  
  `remove_action('template_redirect', 'wp_shortlink_header', 11);`  
  Shortlink system is obsolete. Removing reduces clutter.

- **REST API Discovery Link**  
  `remove_action('wp_head', 'rest_output_link_wp_head', 10);`  
  REST API still works, but no longer broadcast in headers.

- **oEmbed Discovery + Scripts**  
  `remove_action('wp_head', 'wp_oembed_add_discovery_links', 10);`  
  `remove_action('wp_head', 'wp_oembed_add_host_js');`  
  Prevents WordPress from advertising oEmbed endpoints and loading extra JS.

- **Resource Hints (dns-prefetch, preconnect)**  
  `remove_action('wp_head', 'wp_resource_hints', 2);`  
  Stops WP from auto-inserting DNS hints you may not control.

- **Emoji Scripts and Styles**  
  `remove_action('wp_head', 'print_emoji_detection_script', 7);`  
  `remove_action('wp_print_styles', 'print_emoji_styles');`  
  Removes redundant emoji JS/CSS. Browsers already handle emojis natively.

- **Global Styles (Block Editor/Gutenberg)**  
  `remove_action('wp_head', 'wp_enqueue_global_styles', 1);`  
  Prevents WP from injecting default CSS that bloats your source.

---

**Extra Hardening:**

- **Disable XML-RPC**  
  `add_filter('xmlrpc_enabled', '__return_false');`  
  Blocks XML-RPC protocol (commonly abused in brute force/DDoS attacks).

- **Remove X-Pingback Header**  
  `add_filter('wp_headers', function($headers) { unset($headers['X-Pingback']); return $headers; });`  
  Stops WP from advertising its pingback URL.

- **Turn off PHP Exposure (optional)**  
  `@ini_set('expose_php', 'off');`  
  Prevents PHP version disclosure in server headers.

---

**Why this matters:**

- Less clutter in your `<head>`  
- Fewer HTTP requests and faster load times  
- Less information leakage for bots/hackers  
- Cleaner source code when you “View Source”  
- Safer defaults without touching your theme files  

---

If you find this plugin useful, consider supporting my work:  
👉 [Buy Me a Coffee](https://buymeacoffee.com/avocadowebservices)

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/header-junk-remover`, or install via the WordPress Plugins screen.  
2. Activate the plugin.  
3. Done — no settings required.

== Frequently Asked Questions ==

= Will this break my theme or plugins? =  
No. These removals are optional extras. Your site runs fine without them.

= Can I keep some of these features? =  
Yes. Open the plugin PHP file and comment out any `remove_action` or `add_filter` line you want to keep.

= Does this affect RSS feeds? =  
It removes the auto-advertised feed links. If you need feeds, just comment those lines out — feeds themselves still exist.

= How can I support this plugin? =  
If this plugin saves you time or helps clean up your site, you can support development here:  
[https://buymeacoffee.com/avocadowebservices](https://buymeacoffee.com/avocadowebservices)

== Changelog ==

= 1.0.2 =
* Added support/donate link (Buy Me a Coffee).
* Documentation updated.

= 1.0.1 =
* Initial public release.  
* Removed generator, RSD link, WLW manifest, shortlink, REST API link, emoji scripts/styles, relational links, oEmbed, resource hints, global styles.
* Added security hardening: disable XML-RPC, remove X-Pingback, disable PHP expose.

== Upgrade Notice ==

= 1.0.2 =
Added support link and updated documentation.