=== 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.1
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.
* 🖼️ **Auto-generated social images.** Posts with no featured image get a branded 1200×630 share card drawn on your own server - no external services, no per-post design work.
* 🎨 **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**

* Auto-generated branded social card (title + optional logo + site name) for posts with no image of their own - rendered locally with GD, cached in uploads, fully color-customizable
* Featured image fallback → first content image → auto-generated card → 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`.

= What is the auto-generated social image? =

When a post has no featured image, no image in its content, and no per-post override, Simple Open Graphs can paint a branded 1200×630 card from the post title (plus an optional logo and your site name) so the shared link still looks great. The image is drawn on your own server with the PHP GD extension - no external requests - and cached in your uploads folder so it's generated once and reused. Turn it on and choose your colors under **Settings → Open Graph → Social Image**. It requires the GD extension with FreeType/TrueType support; when that isn't available, the plugin simply falls back to your default social image.

= 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`. For the auto-generated card, use `sog_card_style` (colors/logo per post), `sog_card_font_path` (point to your own `.ttf`), and `sog_card_available` (force the feature on or off). 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.1 =
* **Auto-generated social images.** Posts with no featured image, no in-content image, and no per-post override now get a branded 1200×630 share card, drawn locally with GD (no external requests) and cached in the uploads directory.
* New **Social Image** settings tab: enable the feature, set background / title / accent colors, add an optional logo, toggle the site name, and preview the result live.
* Live preview cards in the post editor now show the auto-generated card when a post has no image of its own.
* The generated card slots into the image fallback chain ahead of the static default image, so each otherwise-image-less post gets a unique preview.
* Cards regenerate automatically when a post's title or the card design changes; a **Clear generated cards** button purges the cache on demand.
* Bundled the SIL OFL-licensed Liberation Sans font for rendering, with graceful fallback to system fonts and a `sog_card_font_path` filter.
* New developer hooks: `sog_card_available`, `sog_card_font_path`, `sog_card_style`.

= 2.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.1 =
Adds auto-generated branded social images for posts without a featured image, drawn locally with no external requests. Enable it under Settings → Open Graph → Social Image.

= 2.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.
