=== VeravalOnline Failover Post Sync with DNS and IP ===
Contributors: veravalonline
Tags: failover, sync, seo, replication, disaster-recovery
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sync WordPress posts, media, and metadata to a failover server over DNS or IP while keeping public URLs unchanged.

== Description ==

VeravalOnline Failover Post Sync with DNS and IP keeps a primary WordPress site and a standby copy in sync. Use it when the same public site runs on Server A and a failover Server B. Publishing on A used to leave B stale, which hurts SEO after DNS failover.

Install the plugin on both WordPress copies. The primary pushes:

* Post title, slug, content, excerpt, status, and exact publish/modified dates
* Featured images and attached media, written to the same uploads path
* Categories, tags, and custom taxonomies
* SEO and custom field metadata (Yoast, Rank Math, ACF, and others)
* Deletes or trash, if enabled

Visitor-facing URLs stay on the public domain. The plugin never rewrites content to the failover IP or internal hostname.

DNS mode: Destination URL is a hostname that already points at Server B (internal DNS, hosts file, or a dedicated failover name).

IP mode: Destination URL is the public HTTPS URL. Destination IP is Server B. Requests keep the real Host/SNI so the SSL certificate still validates.

== Installation ==

1. Copy the `veravalonline-failover-post-sync` folder into `wp-content/plugins/` on Server A and Server B.
2. Activate VeravalOnline Failover Post Sync with DNS and IP on both sites.
3. On both sites, open Failover Post Sync → Settings and paste the same Shared API key.
4. Server A: role = Primary. Set Destination URL to Server B’s WordPress home URL.
5. Server B: role = Failover.
6. On Server A click Test connection, then Sync all posts once to seed B.

== Frequently Asked Questions ==

= Will this change permalinks or image URLs? =

No. Slugs and upload relative paths are copied as-is. Public URLs stay on the visitor domain.

= Do post IDs stay the same? =

Not necessarily. Matching uses a hidden sync GUID, then the same slug. Gutenberg image IDs and attachment meta are remapped automatically.

= What if we already created some posts by hand on Server B? =

A full sync updates the failover post that has the same slug, so you do not get duplicates.

== Changelog ==

= 1.0.2 =
* Keep "Tested up to" only in the readme.
* Register the custom cron interval before scheduling it on activation.
* Import synced media through WordPress upload APIs.
* Stop impersonating an administrator during remote content import.

= 1.0.1 =
* Distinctive plugin name and slug for the WordPress.org directory.
* Tested with WordPress 7.1.

= 1.0.0 =
* Initial release.
