WP Manifestindependent plugin directory
manifest / developer / advanced-custom-fields-auto-json-sync

Advanced Custom Fields: Auto JSON Sync WP Registry grade C-. High-severity findings · 1 findingWP RegistryHigh-severity findings · 1 findingOpen the reportC-

Automatically update your local ACF JSON field groups

★ 26stars
0.2.0latest · never

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/jaw-dev/advanced-custom-fields-auto-json-sync/archive/refs/heads/master.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

This is an addon plugin for Advanced Custom Fields. This addon will automate the JSON sync functionality to update your ACF field groups when you are using version control with your project.

The plugin will create the acf-json directory in your active theme, and scans the acf-json directory for any changes to the field group JSON files. When changes are detected your ACF fields groups will be updated.

Requirements

Advanced Custom Fields

Releases

2 releases.

Tag
Published
0.2.0 latest
May 26, 2017 9 years ago
May 26, 2017 9 years ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

C- grade

Security

Advanced Custom Fields: Auto JSON Sync NEXT · audited by WP Registry

High-severity findings.

1 high
Audited release
NEXT
Findings
1
Worst severity
high
Content hash
5fd01199192cacb894d4893e…

Findings

  • high Unauthenticated init hook imports and trashes ACF field groups

    missing_auth

    ACF_AJS_Update_Field_Groups hooks init at priority 10 with no is_admin(), current_user_can(), or nonce. maybe_update_field_groups() walks acf_get_setting('load_json') (fallback: parent-theme/acf-json) and for each path calls acf_import_field_group() on groups get_json_field_groups() marks as new/newer, then maybe_trash_field_group_from_database() which wp_list_pluck()s all acf-field-group posts (publish + acf-disabled, posts_per_page 99) and acf_trash_field_group($id) for every post_name not present in that directory's JSON keys. isset($key) in the foreach is always true. ACF's own Sync screen requires acf_get_setting('capability') (default manage_options); this plugin performs the same privileged writes on every front-end request. Sister class ACF_AJS_Directory_Structure runs first on the same init and wp_mkdir_p()s missing load_json dirs, so a typical site that stored field groups only in the database gets an empty acf-json folder and then has every group trashed on the next unauthenticated hit. Trash is per-directory against the full DB key set, so an extra empty load_json path (child vs parent theme) also wipes all groups. The HTTP client does not choose the JSON payload (files on disk do), but they do trigger site-wide schema import/delete. $_SERVER['REQUEST_URI'] is only compared to admin_url() (never equal; redirect is dead). No wp_ajax/REST handlers. Upstream last commit is 2017-05-30, header Version is the gulp placeholder NEXT, and there is no Update URI.

    includes/class-update-field-groups.php:43-86,150-173

    Recommendation

    Do not mutate field groups on public init. Gate the sync behind is_admin() and current_user_can(acf_get_setting('capability')) (or manage_options), or run it only from admin_init / a WP-CLI command / a capability-checked cron. Never call acf_trash_field_group when the JSON directory is empty, unreadable, or newly created; require an explicit allow-delete flag. Compare JSON keys across all load_json paths before trashing, and restore ACF filter/json settings after import. If the project is unmaintained, remove the plugin and use ACF's built-in Sync UI or a deploy-time WP-CLI import.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.