=== MURPLE SEO Tools ===
Contributors: igorschwarcz
Tags: seo, meta tags, open graph, schema, sitemap
Requires at least: 5.9
Tested up to: 7.1
Stable tag: 1.0.0
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Lightweight SEO plugin: meta tags, Open Graph, Schema.org (10 types), XML sitemap, robots.txt, GA4/GTM and performance tweaks.

== Description ==

**MURPLE SEO Tools** is a self-contained SEO plugin for WordPress. It handles on-page SEO, structured data, the sitemap and common performance settings in one place. The plugin itself does not call any external API and does not send any data anywhere. Optional Google services are only loaded when you enter their ID (see **External services**).

= What it does =

* **Meta tags** — SEO title, meta description, keywords, robots and canonical for posts, pages, custom post types and taxonomy terms, with global defaults and a configurable title format.
* **Open Graph and Twitter / X Cards** — title, description, image (with size and alt text), URL, site name and locale.
* **Schema.org structured data (JSON-LD)** — 10 types: Article / BlogPosting, Product (WooCommerce aware), Recipe, FAQPage, Event, Person, LocalBusiness / Organization, Review / AggregateRating, HowTo and VideoObject.
* **XML sitemap** — `sitemap.xml` with posts, pages, custom post types and taxonomy terms; items set to noindex are excluded. It is regenerated automatically when content changes and can be regenerated manually.
* **robots.txt** — editable virtual robots.txt; the sitemap URL is added automatically.
* **Search engine verification** — Google Search Console and Bing Webmaster Tools meta tags.
* **Local SEO** — company details, contact point and GEO meta tags.
* **Google Analytics 4 and Google Tag Manager** — enter the ID and the tracking code is added through the WordPress script API.
* **Performance** — optional preconnect hints for Google Fonts and Adobe Fonts, font-display swap, LCP image preload, deferred jQuery, optional .htaccess rules (GZIP, cache headers, security headers) and optional HTML/CSS minification.
* **Head cleanup** — optional removal of the emoji script, generator tag, RSD, wlwmanifest, shortlink, feed links and prev/next links.
* **Noindex control** — per post, page and term; respects the WordPress "Discourage search engines" setting and shows a warning in the editor when it is enabled.
* **Interface languages** — Slovak, English, Hungarian, Czech, German, Spanish and French. The language follows the user profile or can be set for the plugin in its settings.

= Privacy =

The plugin does not collect, store or transmit personal data. When you enable Google Analytics 4 or Google Tag Manager, those services may collect visitor data under Google's terms. See **External services** below.

== Installation ==

1. Upload the `murple-seo-tools` folder to `/wp-content/plugins/`, or install the plugin from the **Plugins** screen.
2. Activate the plugin.
3. Open **SEO Tools** in the admin menu and fill in the global settings.
4. Optionally edit the SEO fields of individual posts, pages and taxonomy terms.

== Frequently Asked Questions ==

= Can I use it together with Yoast SEO or Rank Math? =

No. Two SEO plugins would output duplicate meta tags. Deactivate your other SEO plugin first.

= Where do I set the SEO title and description of a page? =

Open the post or page in the editor. The **SEO Tools** meta box is shown below the content in both the block editor and the classic editor.

= Can I set SEO fields for categories and tags? =

Yes. Edit any category, tag or custom taxonomy term; the SEO fields are at the bottom of the form.

= How does the sitemap work? =

The plugin writes `sitemap.xml` to the site root and keeps a copy in the database. If the file cannot be written, the sitemap is served dynamically at the same address.

= Does the plugin write to .htaccess? =

Only when you enable the .htaccess option on the **Performance** tab. The rules are written with the WordPress core function `insert_with_markers()` between `# BEGIN MURPLE SEO Tools` and `# END MURPLE SEO Tools` and are removed again when the option is disabled or the plugin is deactivated. They add GZIP/Brotli compression, browser cache headers and security headers, and they block direct access to `wp-config.php`, `.htaccess` and `xmlrpc.php`. If you use Jetpack or the WordPress mobile app, which need `xmlrpc.php`, leave this option disabled. This works on Apache servers only.

= How do I enable minification? =

On the **Performance** tab. Minification uses the WordPress core template enhancement output buffer and therefore requires WordPress 6.9 or newer; on older versions the option has no effect. Test your site after enabling it.

= What is removed when I delete the plugin? =

Deleting the plugin from the **Plugins** screen removes its settings, the SEO data of posts, pages and terms, and the `sitemap.xml` file it created.

= Is it compatible with multisite? =

Each site of a network has its own settings. Network-wide administration is not available.

== External services ==

This plugin can connect to the following third-party services. Each connection is made only after you enter the corresponding ID or enable the corresponding option. Nothing is loaded by default.

= Google Analytics 4 (GA4) =

Used to measure website traffic. When a GA4 Measurement ID is entered, the plugin loads the Google tag script from `https://www.googletagmanager.com/gtag/js` on every front-end page. The visitor's browser then sends page-view data to Google (page URL, referrer, browser and device information and the IP address). The service is provided by Google LLC.

* [Google Analytics Terms of Service](https://marketingplatform.google.com/about/analytics/terms/us/)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Google Tag Manager (GTM) =

Used to manage marketing and analytics tags. When a GTM Container ID is entered, the plugin loads `https://www.googletagmanager.com/gtm.js` on every front-end page and adds the official `<noscript>` iframe from `https://www.googletagmanager.com/ns.html`. Which data is sent depends on the tags configured in your container. The service is provided by Google LLC.

* [Google Tag Manager Use Policy](https://marketingplatform.google.com/about/tag-manager/use-policy/)
* [Google Privacy Policy](https://policies.google.com/privacy)

= Google Fonts and Adobe Fonts (preconnect hints) =

When the corresponding performance option is enabled and your theme already loads fonts from these services, the plugin adds `<link rel="preconnect">` hints for `fonts.googleapis.com` / `fonts.gstatic.com` or `use.typekit.net`. The plugin does not load any font itself; the hint only lets the browser open the connection earlier.

* [Google Fonts FAQ and privacy](https://developers.google.com/fonts/faq/privacy), [Google Privacy Policy](https://policies.google.com/privacy)
* [Adobe Fonts Terms of Use](https://www.adobe.com/legal/terms.html), [Adobe Privacy Policy](https://www.adobe.com/privacy/policy.html)

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
First public release.
