Skip to content

Instantly share code, notes, and snippets.

@jessepearson
Created March 24, 2015 12:58
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jessepearson/a537b2f78556cd705947 to your computer and use it in GitHub Desktop.
Save jessepearson/a537b2f78556cd705947 to your computer and use it in GitHub Desktop.
Automatically update Advanced Custom Fields field groups via JSON
<?php
/**
* Function that will automatically update ACF field groups via JSON file update.
*
* @link http://www.advancedcustomfields.com/resources/synchronized-json/
*/
function jp_sync_acf_fields() {
// vars
$groups = acf_get_field_groups();
$sync = array();
// bail early if no field groups
if( empty( $groups ) )
return;
// find JSON field groups which have not yet been imported
foreach( $groups as $group ) {
// vars
$local = acf_maybe_get( $group, 'local', false );
$modified = acf_maybe_get( $group, 'modified', 0 );
$private = acf_maybe_get( $group, 'private', false );
// ignore DB / PHP / private field groups
if( $local !== 'json' || $private ) {
// do nothing
} elseif( ! $group[ 'ID' ] ) {
$sync[ $group[ 'key' ] ] = $group;
} elseif( $modified && $modified > get_post_modified_time( 'U', true, $group[ 'ID' ], true ) ) {
$sync[ $group[ 'key' ] ] = $group;
}
}
// bail if no sync needed
if( empty( $sync ) )
return;
if( ! empty( $sync ) ) { //if( ! empty( $keys ) ) {
// vars
$new_ids = array();
foreach( $sync as $key => $v ) { //foreach( $keys as $key ) {
// append fields
if( acf_have_local_fields( $key ) ) {
$sync[ $key ][ 'fields' ] = acf_get_local_fields( $key );
}
// import
$field_group = acf_import_field_group( $sync[ $key ] );
}
}
}
add_action( 'admin_init', 'jp_sync_acf_fields' );
@saminton
Copy link

saminton commented Feb 3, 2020

@juanjosezg I ended up using https://www.advancedcustomfields.com/resources/local-json/ . It's not automated (you have to press a sync button) but it's the best I could find that worked reliably.

@Mulli
Copy link

Mulli commented Feb 24, 2020

@saminton Can you please provide a better link. The current is broken. Thanks

@saminton
Copy link

@Mulli, sorry I messed up the hyperlink. All fixed now.

@mnngithub
Copy link

acf_get_fields
@justinkmotion That worked. However all of my acf field groups got duplicated. How do i solve this?

@souricardomaia
Copy link

@justinkmotion thanks to post the fix. Help me a lot.

@souricardomaia
Copy link

Hey everyone,

  1. Did anyone have problems with automatic duplication of groups after using this script?

  2. I noticed that some groups started to appear as posts. Did this happen to any of you?

ACF error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment