Skip to content

Instantly share code, notes, and snippets.

@reanim8ed
Last active August 29, 2019 21:40
Show Gist options
  • Save reanim8ed/595bf1ed5de4b1a24d7d9f71695acc11 to your computer and use it in GitHub Desktop.
Save reanim8ed/595bf1ed5de4b1a24d7d9f71695acc11 to your computer and use it in GitHub Desktop.
[Auto sync ACF json] #wordpress #ACF
//Auto sync from loaded JSON
function sync_acf_fields() {
$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 ) ) {
$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', 'sync_acf_fields' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment