=== Snigirev Meta & Alt ===
Contributors: mkrabs
Tags: seo, alt text, image seo, schema, redirects
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Image SEO: ALT/Title/Caption/Description, meta title/description, schema.org markup, XML sitemap, robots.txt, Open Graph, redirects.

== Description ==

A free SEO plugin: manual editing of ALT/Title/Caption/Description for
Media Library images, SEO title/description for posts and pages, basic
schema.org markup (JSON-LD, Article/WebPage), an XML sitemap and
robots.txt.

= Features =

* Media Library: scan images missing ALT text (global mode) and browse
  the images used on a specific page/post ("per page" mode), edit
  ALT/Title/Caption/Description, save one card at a time or in bulk with
  the "Save all" button
* Meta tags: a metabox on the post edit screen with SEO title/description
  fields, output of the tags on the front end (`<title>`,
  `<meta name="description">`)
* Default templates ("Smart Tags", modeled after AIOSEO): if a post has no
  custom SEO Title/Description, the site-wide template from Settings is
  used, with placeholders `#post_title`, `#site_title`, `#tagline`,
  `#separator`, `#current_year`, `#current_date` — the post metabox shows
  what will actually be output before you even save. In Settings, tags
  are inserted with a button click, and a live preview with real site
  values is shown right under the field
* Schema.org: JSON-LD Article (posts) / WebPage (pages) markup in
  `wp_head`, reusing the values from the Meta module
* XML sitemap at `/sitemap.xml` — all public posts/pages, generated
  dynamically on request (no file written to disk), can be toggled in
  Settings
* robots.txt: extra rules from Settings are appended to WordPress's
  standard virtual robots.txt, plus an automatic `Sitemap:` line pointing
  to the sitemap (if enabled)
* Open Graph (`og:title`, `og:description`, `og:image`, `og:url`,
  `og:site_name`, `og:locale`) in `wp_head` — a single standard parsed by
  VKontakte, Odnoklassniki, Telegram and MAX for link previews. Reuses
  the same values as SEO title/description (see Meta/Smart Tags above)
* 301/302 redirects: a rule is "source (path, `*` allowed as a prefix
  wildcard) → destination (full URL)", managed as a list with
  enable/disable and delete right in the admin screen (Snigirev Meta &
  Alt → Redirects), checked on every request before the page is output

= Extended AI version =

If you need automatic AI generation of ALT text/title/caption/description
for images and AI-generated SEO Title/Description for posts and pages,
that's a separate paid product, **Snigirev AI Meta & Alt** (the full
version), not distributed through the WordPress.org directory. Details
and purchase: [aiseobooster.aeropic.ru](https://aiseobooster.aeropic.ru/).
Snigirev Meta & Alt is a standalone free plugin that works fully on its
own, with no integration with the paid version.

== External Services ==

This plugin does not send any data to external services. All assets
(including the select2 library used for the page/post dropdown on the
"Snigirev Meta & Alt" media screen) are bundled with the plugin and
served from your own site — no third-party CDN or remote service is
contacted, neither from the server nor from the administrator's browser.

== Installation ==

1. Unzip the archive and upload the `snigirev-meta-alt` folder to
   `/wp-content/plugins/` (or use Plugins → Add New → Upload Plugin with
   the archive itself)
2. Activate the plugin through the "Plugins" menu
3. Snigirev Meta & Alt (menu item) — scan and edit image SEO fields
4. On any post/page edit screen — the "Snigirev Meta & Alt — meta tags"
   metabox for SEO title/description
5. Snigirev Meta & Alt → Settings — meta tag templates, XML sitemap,
   robots.txt
6. Snigirev Meta & Alt → Redirects — manage 301/302 redirects

== Frequently Asked Questions ==

= Do I need a license or registration? =

No. Snigirev Meta & Alt is completely free, with no license keys and no
feature restrictions.

= Does this version include AI-generated ALT text and descriptions? =

No. This version only supports manual editing of ALT/Title/Caption/
Description and SEO Title/Description. AI generation is available in the
separate paid product Snigirev AI Meta & Alt (see "Extended AI version"
above).

= Does the plugin send my site's data anywhere? =

No, the server side of the plugin makes no external HTTP requests. See
the External Services section above for details.

= How do I contact support? =

Author: Pavel Snigirev.
Email: A-FONIKI@yandex.ru.
Phone: +7 903 200-82-22.

== Changelog ==

= 1.0.3 =
* Added Plugin URI and Author URI headers so the Plugins screen shows the
  standard "Visit plugin site" / author links (previously missing).

= 1.0.2 =
* Security fix: hardened JSON-LD output in the Schema module against XSS
  via post title/description (switched to HEX-escaping JSON flags).
* Updated the bundled select2 library to the final stable 4.1.0 release
  (was a pre-release build).
* Rewrote the media-screen SQL queries to use fully literal, documented
  `$wpdb->prepare()` calls (no runtime-built query text passed to
  `prepare()`), and documented the one unavoidable variable-length `IN()`
  placeholder list with an explicit code comment.
* Renamed the internal plugin bootstrap function to match WordPress
  Coding Standards naming conventions.

= 1.0.1 =
* Bundled the select2 library locally instead of loading it from a CDN.
* Hardened SQL queries in the media screen to use $wpdb->prepare()
  throughout.
* Added missing input sanitization/unslashing for a few request
  parameters.

= 1.0.0 =
* First release of Snigirev Meta & Alt: image SEO fields (manual
  editing), title/description meta tags with Smart Tags, schema.org,
  XML sitemap, robots.txt, Open Graph, redirect manager.
