{"id":26793136,"url":"https://github.com/beapi/bea-content-sync-fusion","last_synced_at":"2025-04-22T15:12:26.758Z","repository":{"id":10164267,"uuid":"12245928","full_name":"BeAPI/bea-content-sync-fusion","owner":"BeAPI","description":"Synchronize contents across your Multisite. ","archived":false,"fork":false,"pushed_at":"2025-01-22T11:29:45.000Z","size":2483,"stargazers_count":46,"open_issues_count":14,"forks_count":8,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-22T15:12:05.770Z","etag":null,"topics":["content","multisite","php","synchronisation","synchronization","wordpress","wordpress-plugin","wp-cli-command"],"latest_commit_sha":null,"homepage":"https://beapi.fr","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BeAPI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-08-20T15:00:59.000Z","updated_at":"2025-03-14T05:54:09.000Z","dependencies_parsed_at":"2024-07-30T17:10:42.166Z","dependency_job_id":null,"html_url":"https://github.com/BeAPI/bea-content-sync-fusion","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BeAPI%2Fbea-content-sync-fusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BeAPI%2Fbea-content-sync-fusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BeAPI%2Fbea-content-sync-fusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BeAPI%2Fbea-content-sync-fusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BeAPI","download_url":"https://codeload.github.com/BeAPI/bea-content-sync-fusion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250264909,"owners_count":21402004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["content","multisite","php","synchronisation","synchronization","wordpress","wordpress-plugin","wp-cli-command"],"created_at":"2025-03-29T16:19:16.731Z","updated_at":"2025-04-22T15:12:26.725Z","avatar_url":"https://github.com/BeAPI.png","language":"PHP","funding_links":["https://www.paypal.me/BeAPI"],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://beapi.fr\"\u003e![Be API Github Banner](.github/banner-github.png)\u003c/a\u003e\n\n\nBEA - Content Sync Fusion\n=======================\n\nManage content synchronisation across a WordPress multisite.\n\n## Requirements\n\n* WordPress should be installed as [multisite](https://codex.wordpress.org/Create_A_Network).\n* Require at least WordPress 4.6.x, in order to use the `WP_Site_Query`.\n* Know and understand the implementation of CRON tasks on a Linux server\n\n## Installation\n\n3 possibilities.\n\n * Take the ZIP archive proposed in the Github releases\n * Add \"bea/bea-content-sync-fusion\" on composer json project file\n * Take this GIT repository and call \"composer install\" command\n\n## Compatibility\n\nCompatible up to WordPress 5.x\n\n### Third plugins compatibility\n\n * **[WooCommerce](https://wordpress.org/plugins/woocommerce/)**\n * [Polylang](https://wordpress.org/plugins/polylang/)\n * [Post Types Order](https://wordpress.org/plugins/post-types-order/)\n * [Advanced Custom Fields](https://www.advancedcustomfields.com/)\n * [The Events Calendar Family](https://theeventscalendar.com/)\n * [Revisionize](https://wordpress.org/plugins/revisionize/)\n * [Multisite Clone Duplicator](https://wordpress.org/plugins/multisite-clone-duplicator/)\n\n## Who ?\n\nCreated by [Be API](https://beapi.fr), the French WordPress leader agency since 2009. Based in Paris, we are more than 30 people and always [hiring](https://beapi.workable.com) some fun and talented guys. So we will be pleased to work with you.\n\nThis plugin is only maintained, which means we do not guarantee some free support. Consider reporting an [issue](#issues--features-request--proposal) and be patient.\n\nIf you really like what we do or want to thank us for our quick work, feel free to [donate](https://www.paypal.me/BeAPI) as much as you want / can, even 1€ is a great gift for buying coffee :)\n\n## Changelog\n\n### 3.12.7\n\n* Fixed: Add missing argument `--alternativeq` in cronjob script.\n\n### 3.12.6\n\n* Security: Added prepared statements to previously vulnerable SQL queries to enhance database security.\n\n### 3.12.5\n\n* Fixed : Ensure variables are not empty arrays before use\n\n### 3.12.4\n\n* Fixed : Ensure an array key exists to prevent a warning\n\n### 3.12.3\n\n* Fixed : Ensure manipulating an array when using `is_array()` (fatal error with PHP 8+)\n\n### 3.12.2\n\n* Added: Add compatibility with Members metaboxes\n\n### 3.12.1\n\n* Changed: Order terms hierarchically when doing a resync\n\n### 3.12.0\n\n* Added : Add compatibility with Yoast SEO meta images.\n\n### 3.11.0\n\n* Fixed : Delete content one uncheck manual admin metabox\n\n### 3.10.0\n\n* Performance : Do not flush object cache after each pull of content, this needs to be manually done. The query cache layer is cleared/added on right actions.\n* Added : Allow to pass non positionnal arguments to the cron query.\n* Added : Add each command missing phpdocbloc.\n* Added : Allow to filter the \"fields\" field before inserting it.\n\n### 3.9.11\n\n* Fixed : Warning when merging taxonomies\n\n### 3.9.10\n\n* Fixed : Clean cache when a site is deleted\n\n### 3.9.9\n* Changed: Order terms by ID when doing a resync\n\n### 3.9.8\n* Fixed: Replace comma with the AND keyword in SQL queries\n\n### 3.9.7\n\n* Added: Add the cast for the arguments of the method \n\n### 3.9.6\n\n* Fixed: Fix a bug by ensure \"post_name\" is set with wp_post_update() instead wp_publish_post()\n* Added: object cache on relations\n\n### 3.9.5\n\n* Fixed: #136 When post does not exists on filter bea_csf.server.xxxx.merge\n* Updating composer.json allowed plugin\n\n### 3.9.4\n\n* Fixed: Change the return type of `attachment_fields_to_edit` to array to match the filter type attended\n* Added: Add the minimum WordPress version to plugin header\n\n### 3.9.3\n\n* Fixed: Correction of the syntax for the creation of the relations table. (Missing commas)\n\n### 3.9.2\n\n* Feature: Added synchronisation of Gutenberg ACF blocks\n* Fixed: Remove double all on admin widget\n\n### 3.9.1\n\n* Enhancement: Add new indexes to speedup the queries on receivers and emitters queries.\n\n### 3.9\n\n* Feature: New \"exclude_default\" mode for attachments. Excludes attachments from the default synchronisation and adds a meta box to include them.\n* Added:  Add \"--posttype=true\", \"--taxonomies=true\" and \"--attachments=true\" arguments for the flush site command\n* Changed: Update of the .pot file and the FR translations\n* Fixed : Fix warning on term has no view (publicly_queryable=false)\n* Fixed : Fixed warning for \"deletes_tag\" and \"taxonomy\" values that are undefined.\n\n### 3.8.2\n\n* Added: Hook to change ID on save_post (for revisionary metabox)\n* Fixed: fix a bug on delete sync term by remove relation\n* Fixed: fix a bug with encode chars with get_the_title\n* Fixed: fix a fatal error with attrs or inner content null for gutenberg\n* Fixed: fix parent on term exist function for polylang\n* Fixed: fix a bug with same terms slugs for polylang\n* Fixed: fix wrong type when checking for attachment parent\n* Changed: handle the alternate queue if argument passed for cronjob\n* Changed: bump tools\n\n### 3.8.1\n\n* Fixed: fix a possible bug with nested calls to switch_to_blog()\n* Fixed: fix a bug with escapging data \u0026 gurenberg (thanks @petitphp)\n* Added: Add tools for testing (thanks @Rahe)\n\n### 3.8\n\n* Fixed: fix terms synchronization, a bug introduced on 3.0.1\n* Added: Add tooling for quality (phpcs/cbf/psalm)\n* Added: New algorithm for reciprocal relations, or derivated relations\n* Changed: Update JavaScript libraries\n* Removed: old PHP libraries\n* Removed: custom flag \u0026 custom fields columns on relation object\n\n### 3.7\n\n* Feature: full support of Gutenberg\n* Improvement: Polylang addon (slug conflict)\n* Improvement: Restriction for terms\n\n### 3.6\n\n* Feature: add new CLI command for mirror 2 sites on network, populate relations, useful after a site duplication\n* Feature: full support of Polylang\n* Feature: add support of ACF group field\n* Feature: add some new filter for capibility check bea_csf_taxonomy_caps / bea_csf_post_caps\n* Bugfix: fix canonical feature for WPseo\n* Bugfix: save db version on network ID : 1, instead 0 (not exists)\n* Bugfix: fix potential loop with ACF/save_post hook on rare case\n\n### 3.5.1 - 02 march 2020\n\n* Feature: add Polylang addon (thanks to @asadowski10)\n* Improvement: add filters to allow emitter posts lock on receiver blog\n* Improvement: add filter to admin metabox\n\n### 3.5.0 - 07 august 2019\n\n* Feature: Add WooCommerce addon (support product, product variations)\n* Change: add a column on queue table (**you must desactive AND reactive plugin on network**)\n* Bugfix: fix a bug with post_parent sync \n* Bugfix: fix unwanted publication with pending status\n* Bugfix: fix a bug with manual mode and gutenberg, with unwanted publication on all sites\n* Bugfix: fix a bug with publish/unpublish/publish sequences\n\n### 3.4.7 - 17 november 2018\n\n* Bugfix: Create relation when a term already exists with the same on target\n\n### 3.4.6 - 16 november 2018\n\n* New: add --quantity param for WP-CLI content-sync-fusion queue pull method\n* Bugfix: Manage fatal error for media sync on specific case\n* Bugfix: Fix notices/warning PHP with admin restriction feature\n\n### 3.4.5 - 3 october 2018\n\n* Bugfix: Deleting a debug condition that checks the structure of the table all the time and therefore loss of performance ...\n\n### 3.4.4 - 2 october 2018\n\n* Changes: rename 2 hooks name for extend post status for publish/delete\n* Improvement: improve performance for bash CRON with smart param\n* New: add --smart=true param for WP-CLI resync command for improve performance by loop on only emitters blogs from synchronization settings\n\n### 3.4.3 - 1 october 2018\n\n* Bugfix: A bug occurred when post is delete, only the first blog work, an orphan is generated for others blogs (introduced on 3.0.1)\n* Improvement: replace error message by warning message on WP-CLI commands\n* Improvement: some code styling / strict tests\n\n### 3.4.2.1 - 26 september 2018\n\n* Bugfix: Stop to kill CRON process when an error is occurred\n\n### 3.4.2 - 26 september 2018\n\n* Bugfix: trash post is now functionnal (item is deleted from synchro)\n\n### 3.4.1 - 24 september 2018\n\n* Feature: add WP-CLI command for get URL of sites with contents synchronized (flush part)\n\n### 3.4.0 - 20 september 2018\n\n* Feature: A full refactoring for the bash script to be use with cronjob\n* **MAJOR Bugfix**: stop to delete emitter file when media is deleted from a receiver\n* Bugfix: allow DB schema change with WP-CLI\n* Bugfix: priorize the synchro in this order: Terms, Attachments and after post type\n* Improvement: some code styling\n\n### 3.3.2 - September 2018\n\n* Bugfix: Allow progressbar to be accurate for the resync command\n* Bugfix: Make the synchronisation of terms with parents using the parent receiver id\n\n### 3.3.1 - July 2018\n\n* Feature: add WP-CLI command get queue status, stats\n* Feature: add WP-CLI command for get URL of sites with contents need sync (better performance)\n\n### 3.3 - July 2018\n\n * Feature: Add param for allow resync for specific receivers on WP-CLI commands\n * Feature: Allow initial sync content during site creation (async process)\n\n### 3.2.2 - June 2018\n\n * Feature: Allow use hidden (not public) taxonomy\n\n### 3.2.1 - June 2018\n\n * Feature: Add a constant for allow deactivate media synchro\n\n### 3.2 - Novembre-December 2017 =\u003e April 2018\n * Feature: BREAKING, remove old bootstrap script for CRON, now use WP-CLI commands\n * Feature: SEO, add a canonical for synchronized contents to original content\n * Feature: Allow media library shared without files duplication or symlinks\n * Feature: add support for ACF plugin and support complex fields\n * Feature: add support for Revisionize plugin\n * Feature: add support for Multisite Clone Duplicator plugin\n * Feature: add support for The Events Calendar plugins (event/tickets/locations)\n * Feature: add a selector on admin for filter local or remote contents\n * Feature: add a \"internal admin notes\" into metabox\n * Feature: add a WP-CLI command for allow migration from old plugin version\n * Feature: add an \"all\" option for emitters and receivers\n * Feature: allow to exclude some ACF fields or ACF group fields or ACF repeater/flexible fields from future updates\n * Bugfix : fix index length for utf8mb4\n * Bugfix : delete relation from custom table when a post is deleted\n * Bugfix : deenqueue non-existent css on admin\n * Bugfix : Fix compat with old WP version \u003c4.6\n * Bugfix : Fix code register synchros\n\n### 3.0.8 - 30 Oct 2017\n * Feature: Allow to exclude a content for future updates, useful when restriction is deactivated\n\n### 3.0.7 - 20 Oct 2017\n * Fix P2P synchronisation\n * Fix resync all content tools for CPT excluded from search\n\n### 3.0.6 - 15 Oct 2017\n * Add Post Type Order addon.\n\n### 3.0.5 - 07 Oct 2017\n * Allow content resync during blog/site creation\n * Refactoring code for all CLI tools\n * Add blog widget for counter info, and add button for force sync\n * Fix media sync, use a shared folder between blogs\n * Add link action for \"resync content\" into sites list\n * Add button on queue network page for exec CRON (for debug usage)\n * Fix restriction for attachment\n * Update POT/POT\n * Use string for i18n instead PHP constant\n\n### 3.0.4 - 27 Sept 2017\n * Fix display admin emitters / receivers column\n \n### 3.0.3 - 27 Sept 2017\n * Fix infinite loop insertion for taxonomies\n \n### 3.0.2 - 5 Sept 2017\n * Handle multiple networks for admin option\n\n### 3.0.1 - 26 July 2017\n * Fix unserialised datas of media after synch\n * Fix conflict with polylang on sync terms\n \n### 3.0.0 - 29 June 2017\n * Work only on relations table, do not use old meta _origin_key\n * Synchronisations are bidirectional\n * Remove old code from notifications\n\n### 2.0.2\n * Add filter bea_csf.client.post_type.allow_bidirectional_sync to allow bidirectional synchronisation\n\n### 2.0.1\n * Fix P2P synchronisation\n\n### 2.0.0\n * Remove media synchronisation using symlink. Use shared uploads folder.\n * Remove old code for old term meta API.\n * Use term_id instead tt_id.\n\n### 1.1\n * Stable version using WordPress metadata API for Taxonomy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeapi%2Fbea-content-sync-fusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeapi%2Fbea-content-sync-fusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeapi%2Fbea-content-sync-fusion/lists"}