{"id":390224,"date":"2026-10-26T08:09:22","date_gmt":"2026-10-26T08:09:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/artd-content-mirror\/"},"modified":"2026-10-26T08:08:58","modified_gmt":"2026-10-26T08:08:58","slug":"artd-content-mirror","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/artd-content-mirror\/","author":23588624,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.2","stable_tag":"0.9.2","tested":"7.1.4","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"ArtD Content Mirror","header_author":"ArtD Labs","header_description":"Safely mirrors RSS and Blogger content into native WordPress posts while preserving the external source of truth.","assets_banners_color":"5479be","last_updated":"2026-10-26 08:08:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":68,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.9.2":{"tag":"0.9.2","author":"artdlabs","date":"2026-10-26 08:08:58","revision":3765791}},"upgrade_notice":{"0.9.0":"<p>First WordPress.org repository candidate. Existing mirrored posts and saved settings are preserved.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3765837,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3765837,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3765837,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3765837,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"artd-content-mirror\/posts":{"name":"artd-content-mirror\/posts","title":"Content Mirror Posts"}},"tagged_versions":["0.9.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2164,288612,74387,252,850],"plugin_category":[56],"plugin_contributors":[288613],"plugin_business_model":[],"class_list":["post-390224","plugin","type-plugin","status-publish","hentry","plugin_tags-blogger","plugin_tags-content-mirror","plugin_tags-content-sync","plugin_tags-feed","plugin_tags-rss","plugin_category-social-and-sharing","plugin_contributors-artdlabs","plugin_committers-artdlabs"],"banners":{"banner":"https:\/\/ps.w.org\/artd-content-mirror\/assets\/banner-772x250.png?rev=3765837","banner_2x":"https:\/\/ps.w.org\/artd-content-mirror\/assets\/banner-1544x500.png?rev=3765837","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/artd-content-mirror\/assets\/icon-128x128.png?rev=3765837","icon_2x":"https:\/\/ps.w.org\/artd-content-mirror\/assets\/icon-256x256.png?rev=3765837","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>ArtD Content Mirror synchronizes articles from an external RSS feed into native WordPress posts.<\/p>\n\n<p>The plugin is designed for sites where content is authored in another system but should also exist as normal WordPress posts. It updates only posts it manages and protects unrelated local content.<\/p>\n\n<p>Core features:<\/p>\n\n<ul>\n<li>Imports full RSS content into native WordPress posts.<\/li>\n<li>Uses GUID + source URL identity to prevent duplicate imports.<\/li>\n<li>Uses SHA-256 fingerprints to detect meaningful content changes.<\/li>\n<li>Stores a snapshot before updating a managed post.<\/li>\n<li>Protects posts that were not created or adopted by Content Mirror.<\/li>\n<li>Supports generic RSS feeds and Blogger pagination.<\/li>\n<li>Configurable scheduled checks from 5 minutes to 24 hours.<\/li>\n<li>Manual sync from WordPress admin.<\/li>\n<li>Feed analysis for source health, item counts, media and metadata.<\/li>\n<li>Remote image mode: source images are not duplicated into the Media Library.<\/li>\n<li>Includes a native Gutenberg block: <strong>Content Mirror Posts<\/strong>.<\/li>\n<li>Includes a homepage\/latest-posts shortcode: <code>[artdcm_posts]<\/code>.<\/li>\n<li>Includes a responsive archive shortcode: <code>[artdcm_archive]<\/code>.<\/li>\n<li>Integrates with the WordPress Abilities API for permission-checked status, settings and sync actions.<\/li>\n<li>Includes archive appearance controls for columns, spacing, image ratio, card style and metadata visibility.<\/li>\n<li>Safe deactivation and uninstall: mirrored posts and saved settings are preserved.<\/li>\n<\/ul>\n\n<p>ArtD Content Mirror does not require a license key and does not contact ArtD Labs servers.<\/p>\n\n<h3>External services<\/h3>\n\n<p>ArtD Content Mirror connects only to sources needed for the feature you configure.<\/p>\n\n<ol>\n<li>User-configured RSS feed<\/li>\n<\/ol>\n\n<p>The plugin requests the RSS URL entered in Settings &gt; Content Mirror. The request is required to analyze and synchronize the feed. The destination server receives the normal information sent with an HTTP request, including the requesting server IP address and the plugin user-agent string.<\/p>\n\n<p>The terms and privacy policy that apply are those of the RSS provider selected by the site administrator.<\/p>\n\n<p>When an imported post has no usable image, the plugin may request the source article URL from the same external source in order to read a public <code>og:image<\/code> value. This request is cached for 24 hours.<\/p>\n\n<ol>\n<li>Remote article images<\/li>\n<\/ol>\n\n<p>When mirrored content contains external images, visitor browsers may load those images directly from the source host because the plugin uses remote-media mode by default.<\/p>\n\n<p>No telemetry, analytics, license validation or update checks are sent to ArtD Labs by the WordPress.org edition.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin does not collect or transmit site-owner data to ArtD Labs.<\/p>\n\n<p>Content synchronized from the configured RSS source is stored as WordPress post data and post metadata. Remote images remain hosted by their source unless the site owner changes that behavior outside this plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate ArtD Content Mirror.<\/li>\n<li>Go to Settings &gt; Content Mirror.<\/li>\n<li>Enter the RSS Feed URL.<\/li>\n<li>Choose the sync interval and rendering profile.<\/li>\n<li>Save settings.<\/li>\n<li>Click Sync now.<\/li>\n<li>Add the <strong>Content Mirror Posts<\/strong> block in Gutenberg, or use <code>[artdcm_posts limit=\"8\" columns=\"4\"]<\/code> in Elementor, WPBakery, Divi, Bricks or any shortcode-capable builder.<\/li>\n<li>Optional: add <code>[artdcm_archive per_page=\"12\"]<\/code> to a page for the full searchable archive.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20overwrite%20normal%20wordpress%20posts%3F\"><h3>Does the plugin overwrite normal WordPress posts?<\/h3><\/dt>\n<dd><p>No. Automatic updates are limited to posts marked as managed by ArtD Content Mirror. Existing local posts are protected.<\/p><\/dd>\n<dt id=\"does%20it%20copy%20images%20into%20the%20media%20library%3F\"><h3>Does it copy images into the Media Library?<\/h3><\/dt>\n<dd><p>No. The WordPress.org edition uses remote-media mode. Image URLs remain external.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20source%20feed%20contains%20only%20a%20short%20excerpt%3F\"><h3>What happens if the source feed contains only a short excerpt?<\/h3><\/dt>\n<dd><p>The plugin contains a safety check that prevents a short fallback description from overwriting substantially longer existing managed content.<\/p><\/dd>\n<dt id=\"what%20does%20uninstall%20remove%3F\"><h3>What does uninstall remove?<\/h3><\/dt>\n<dd><p>Runtime status, logs and scheduled hooks are removed. Mirrored posts and saved settings are intentionally preserved.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20a%20proprietary%20update%20server%3F\"><h3>Does this plugin use a proprietary update server?<\/h3><\/dt>\n<dd><p>No. The WordPress.org edition relies on the standard WordPress.org plugin update system.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.9.2<\/h4>\n\n<ul>\n<li>Replaced generic global prefixes and legacy option\/transient names with the plugin-specific <code>artdcm_<\/code> \/ <code>ARTDCM_<\/code> prefix.<\/li>\n<li>Removed the legacy generic <code>pm_blog_sync_status<\/code> option.<\/li>\n<li>Moved frontend CSS to an enqueued stylesheet and <code>wp_add_inline_style()<\/code> for validated dynamic appearance settings.<\/li>\n<li>Renamed public shortcodes to <code>[artdcm_posts]<\/code> and <code>[artdcm_archive]<\/code> before the first public directory release.<\/li>\n<li>Updated the Gutenberg block namespace to <code>artd-content-mirror\/posts<\/code>.<\/li>\n<\/ul>\n\n<h4>0.9.1<\/h4>\n\n<ul>\n<li>Fixed Plugin Check escaping, nonce, sanitization and translator-comment findings.<\/li>\n<li>Removed provider-specific remote image URL rewriting and hard-coded YouTube thumbnail fallback from the repository edition.<\/li>\n<li>Preserved feed-provided remote images without provider-specific offloading logic.<\/li>\n<li>Updated WordPress.org external-service disclosures to match the repository code.<\/li>\n<\/ul>\n\n<h4>0.9.0<\/h4>\n\n<ul>\n<li>First WordPress.org repository candidate.<\/li>\n<li>Removed commercial license gating and external license-server communication.<\/li>\n<li>Removed the private custom plugin updater; repository updates use WordPress.org.<\/li>\n<li>Removed customer\/theme-specific frontend selectors and URLs.<\/li>\n<li>Added generic, theme-independent latest-posts and archive presentation shortcodes.<\/li>\n<li>Added WordPress Abilities API integration (WordPress 6.9+).<\/li>\n<li>Added source <code>og:image<\/code> and administrator-configured fallback-image handling.<\/li>\n<li>Rebased the public repository candidate on the current 0.8.50 commercial code line while excluding commercial-only and customer-specific code.<\/li>\n<li>Kept RSS\/Blogger sync, managed-post protection, SHA-256 change detection and snapshots.<\/li>\n<li>Added GPLv2-or-later metadata and WordPress.org external-service\/privacy documentation.<\/li>\n<\/ul>","raw_excerpt":"Mirror RSS and Blogger content into native WordPress posts while keeping the external source as the source of truth.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/390224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=390224"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/artdlabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=390224"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=390224"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=390224"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=390224"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=390224"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=390224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}