=== Simple Open Graphs - Social Sharing, Open Graph, Twitter Cards & Rich Previews ===
Contributors: webcodingplace
Donate link: https://www.paypal.me/webcodingplace
Tags: open graph, twitter card, social meta, facebook, social sharing
Requires at least: 5.5
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

The fastest, simplest way to add Open Graph & Twitter/X Card tags. Beautiful previews, per-post overrides, importers from Yoast/Rank Math/AIOSEO.

== Description ==

**Simple Open Graphs** is a feather-light social metadata plugin that makes every link to your site look great on **Facebook, Twitter/X, LinkedIn, WhatsApp, Discord, Slack, Pinterest, Telegram**, and beyond, without the bloat of a full SEO suite.

Less than 100KB on the front end. Zero database tables. Zero settings required to get started.

= Why Simple Open Graphs? =

* ⚡ **Lightweight.** No frontend JavaScript. No CSS. Just clean `<meta>` tags.
* 🎨 **Live previews** of how your post will look on Facebook, LinkedIn, and Twitter/X - right inside the post editor.
* 🔁 **Plays nice with SEO plugins.** Auto-detects Yoast, Rank Math, AIOSEO, SEOPress, Slim SEO, The SEO Framework - and automatically yields to them on the front end so you never get duplicate tags.
* 📥 **One-click importer** from Yoast, Rank Math, All in One SEO, SEOPress, and The SEO Framework.
* 🧰 **Developer friendly.** Filters, REST endpoints, WP-CLI commands, PSR-4 autoloader, namespaced OOP.

= Features =

**Open Graph (Facebook, LinkedIn, WhatsApp, Discord, Slack, Telegram)**

* `og:title`, `og:description`, `og:image`, `og:image:alt`, `og:image:width`, `og:image:height`, `og:image:type`, `og:image:secure_url`
* `og:url`, `og:type`, `og:locale`, `og:site_name`, `og:updated_time`
* `article:published_time`, `article:modified_time`, `article:author`, `article:section`, `article:tag`
* Facebook App ID + Admins
* WooCommerce `product:price:amount`, `product:price:currency`, `product:availability`, `product:retailer_item_id`

**Twitter/X Cards**

* `twitter:card` (summary, summary_large_image, app, player)
* `twitter:title`, `twitter:description`, `twitter:image`, `twitter:image:alt`
* `twitter:site`, `twitter:creator`
* Per-author handle override from the WordPress user profile

**Site verification (one-tag-each)**

* Facebook domain verification
* Pinterest verification (rich pins)
* Google Search Console
* Bing Webmaster Tools

**Automation**

* Featured image fallback → first content image → site default → safety fallback
* Auto-generated excerpts/descriptions trimmed to platform-safe lengths
* Auto locale detection
* Auto title separator
* Auto duplicate-tag prevention

**Compatibility**

* Gutenberg, Classic Editor, Elementor, Divi, Bricks, Oxygen, WPBakery
* WooCommerce, Easy Digital Downloads
* WPML, Polylang, multisite
* AMP, REST API, headless WordPress
* All major page caches & object caches

**Developer tools**

* `wp sog import yoast --overwrite` (WP-CLI)
* `GET /wp-json/sog/v1/meta?url=…` (REST)
* `apply_filters( 'sog_meta_tags', $tags, $data )` and a dozen more

= Privacy =

Simple Open Graphs does **not** make external HTTP requests, does **not** collect telemetry, and does **not** add tracking scripts.

== Installation ==

1. Upload the plugin to `wp-content/plugins/simple-open-graphs/` or install through the Plugins screen.
2. Activate.
3. Visit **Settings → Open Graph** to pick a default social image, enabled post types, and your Twitter/X handle.
4. Edit any post - you'll see a **Social Preview** metabox with live cards.

That's it. Sharing your URL now produces beautiful rich previews.

== Frequently Asked Questions ==

= Do I need an SEO plugin (Yoast, Rank Math, AIOSEO) to use this? =

No. Simple Open Graphs is fully standalone. It's designed for people who want excellent social previews without installing a full SEO suite.

= I already have Yoast / Rank Math / AIOSEO. Will this conflict? =

No. The plugin auto-detects the major SEO plugins and yields the front end to them so you never get duplicate Open Graph tags. You can still use the per-post Social Preview metabox to override their values, and run the **Tools → Import** to copy your existing social metadata in.

= Will this slow down my site? =

No. There is zero JavaScript and zero CSS loaded on the front end. The output is a small static block of `<meta>` tags inside `<head>` - typically under 1 KB. Resolved data is cached via the object cache when available.

= Does this support WooCommerce products? =

Yes - products emit `og:type=product` plus `product:price:amount`, `product:price:currency`, `product:availability`, and `product:retailer_item_id`.

= How do I see how my page looks when shared? =

Use the **Tools** sidebar links to the official Facebook Sharing Debugger, LinkedIn Post Inspector, X Card Validator, and Google Rich Results Test. They each fetch your page and show the rendered preview.

= Can I import my settings from another SEO plugin? =

Yes. Go to **Settings → Open Graph → Tools**, pick your source plugin, and click **Run import**. We support Yoast, Rank Math, All in One SEO, SEOPress, and The SEO Framework.

= Is it translation ready? =

Yes - `Text Domain: simple-open-graphs`. A `.pot` file is included in `/languages`.

= Is it headless / REST friendly? =

Yes. Call `GET /wp-json/sog/v1/meta?url=<absolute-url>` from your headless frontend to get a ready-to-render JSON payload.

= Is it WP-CLI friendly? =

Yes. `wp sog show <post>`, `wp sog import <source>`, `wp sog reset`.

= Does it work with WPML / Polylang? =

Yes. Each translation has its own metabox values and emits the correct `og:locale` automatically.

= How do I customize the output? =

Use filters: `sog_meta_tags`, `sog_resolved_data`, `sog_enabled_post_types`, `sog_should_render`, `sog_remove_duplicate_tags`. Hooks documented in the plugin source.

= How do I report a bug? =

[Open a thread](https://wordpress.org/support/plugin/simple-open-graphs/) on WordPress.org. Include your PHP/WP versions and which SEO plugin (if any) is active.

== Screenshots ==

1. The per-post Social Preview metabox with live Facebook & Twitter/X cards.
2. The main Settings page - pick a default image, Twitter/X handles, Facebook App ID.
3. Verification tab for Facebook, Pinterest, Google, and Bing.
4. Compatibility tab auto-detects co-installed SEO plugins.
5. Tools tab: one-click import from Yoast, Rank Math, AIOSEO, SEOPress, and JSON settings export.

== Changelog ==

= 2.0.0 =
* **Complete rewrite.** Modern OOP architecture (PSR-4 autoloader, namespaced services).
* **Twitter/X Card support** with auto-fallback from large-image to summary when no image exists.
* **LinkedIn, WhatsApp, Discord, Slack, Pinterest, Telegram** unfurl optimization.
* **Live preview cards** in the post editor for Facebook and Twitter/X.
* **Importer** from Yoast SEO, Rank Math, AIOSEO, SEOPress, and The SEO Framework.
* **SEO plugin auto-detection** to prevent duplicate Open Graph tags.
* **WooCommerce product metadata** (`og:type=product`, price, currency, availability, SKU).
* **Verification tags**: Facebook domain, Pinterest, Google Search Console, Bing.
* **Site-wide defaults**: default social image, fallback image, Twitter site/creator handles, FB App ID.
* **Settings export / import / reset** as JSON.
* **REST API endpoint** `/sog/v1/meta` for headless WordPress.
* **WP-CLI commands** (`wp sog show`, `wp sog import`, `wp sog reset`).
* **Object cache** support for resolved metadata.
* **Security hardening**: nonces, capability checks, output escaping, sanitization across all inputs.
* **Backward compatible** with 1.x post meta keys (`sog_title`, `sog_description`, `sog_image_url`, …) - no data is lost.
* New developer hooks: `sog_meta_tags`, `sog_resolved_data`, `sog_enabled_post_types`, `sog_should_render`, `sog_remove_duplicate_tags`.

= 1.0 =
* Initial release.

== Upgrade Notice ==

= 2.0.0 =
Complete rewrite with Twitter/X Cards, live previews, importers, WooCommerce support, and SEO plugin compatibility. Your existing settings and per-post overrides are preserved automatically.
