ACF_Local_JSON{} │ ACF 1.0
Хуков нет.
Использование
$ACF_Local_JSON = new ACF_Local_JSON(); // use class methods
Методы
- public __construct()
- public delete_field_group( $field_group )
- public delete_file( $key )
- public get_files()
- public include_fields()
- public include_json_folder( $path = '' )
- public include_json_folders()
- public is_enabled()
- public save_file( $key, $field_group )
- public scan_field_groups()
- public update_field_group( $field_group )
Код ACF_Local_JSON{} ACF Local JSON{} ACF 6.0.4
class ACF_Local_JSON { /** * The found JSON field group files. * * @since 5.9.0 * @var array */ private $files = array(); /** * Constructor. * * @date 14/4/20 * @since 5.9.0 * * @param void * @return void */ public function __construct() { // Update settings. acf_update_setting( 'save_json', get_stylesheet_directory() . '/acf-json' ); acf_append_setting( 'load_json', get_stylesheet_directory() . '/acf-json' ); // Add listeners. add_action( 'acf/update_field_group', array( $this, 'update_field_group' ) ); add_action( 'acf/untrash_field_group', array( $this, 'update_field_group' ) ); add_action( 'acf/trash_field_group', array( $this, 'delete_field_group' ) ); add_action( 'acf/delete_field_group', array( $this, 'delete_field_group' ) ); // Include fields. add_action( 'acf/include_fields', array( $this, 'include_fields' ) ); } /** * Returns true if this component is enabled. * * @date 14/4/20 * @since 5.9.0 * * @param void * @return bool. */ public function is_enabled() { return (bool) acf_get_setting( 'json' ); } /** * Writes field group data to JSON file. * * @date 14/4/20 * @since 5.9.0 * * @param array $field_group The field group. * @return void */ public function update_field_group( $field_group ) { // Bail early if disabled. if ( ! $this->is_enabled() ) { return false; } // Append fields. $field_group['fields'] = acf_get_fields( $field_group ); // Save to file. $this->save_file( $field_group['key'], $field_group ); } /** * Deletes a field group JSON file. * * @date 14/4/20 * @since 5.9.0 * * @param array $field_group The field group. * @return void */ public function delete_field_group( $field_group ) { // Bail early if disabled. if ( ! $this->is_enabled() ) { return false; } // WP appends '__trashed' to end of 'key' (post_name). $key = str_replace( '__trashed', '', $field_group['key'] ); // Delete file. $this->delete_file( $key ); } /** * Includes all local JSON fields. * * @date 14/4/20 * @since 5.9.0 * * @param void * @return void */ public function include_fields() { // Bail early if disabled. if ( ! $this->is_enabled() ) { return false; } // Get load paths. $files = $this->scan_field_groups(); foreach ( $files as $key => $file ) { $json = json_decode( file_get_contents( $file ), true ); $json['local'] = 'json'; $json['local_file'] = $file; acf_add_local_field_group( $json ); } } /** * Scans for JSON field groups. * * @date 14/4/20 * @since 5.9.0 * * @param void * @return array */ function scan_field_groups() { $json_files = array(); // Loop over "local_json" paths and parse JSON files. $paths = (array) acf_get_setting( 'load_json' ); foreach ( $paths as $path ) { if ( is_dir( $path ) ) { $files = scandir( $path ); if ( $files ) { foreach ( $files as $filename ) { // Ignore hidden files. if ( $filename[0] === '.' ) { continue; } // Ignore sub directories. $file = untrailingslashit( $path ) . '/' . $filename; if ( is_dir( $file ) ) { continue; } // Ignore non JSON files. $ext = pathinfo( $filename, PATHINFO_EXTENSION ); if ( $ext !== 'json' ) { continue; } // Read JSON data. $json = json_decode( file_get_contents( $file ), true ); if ( ! is_array( $json ) || ! isset( $json['key'] ) ) { continue; } // Append data. $json_files[ $json['key'] ] = $file; } } } } // Store data and return. $this->files = $json_files; return $json_files; } /** * Returns an array of found JSON field group files. * * @date 14/4/20 * @since 5.9.0 * * @param void * @return array */ public function get_files() { return $this->files; } /** * Saves a field group JSON file. * * @date 17/4/20 * @since 5.9.0 * * @param string $key The field group key. * @param array $field_group The field group. * @return bool */ public function save_file( $key, $field_group ) { $path = acf_get_setting( 'save_json' ); $file = untrailingslashit( $path ) . '/' . $key . '.json'; if ( ! is_writable( $path ) ) { return false; } // Append modified time. if ( $field_group['ID'] ) { $field_group['modified'] = get_post_modified_time( 'U', true, $field_group['ID'] ); } else { $field_group['modified'] = strtotime( 'now' ); } // Prepare for export. $field_group = acf_prepare_field_group_for_export( $field_group ); // Save and return true if bytes were written. $result = file_put_contents( $file, acf_json_encode( $field_group ) ); return is_int( $result ); } /** * Deletes a field group JSON file. * * @date 17/4/20 * @since 5.9.0 * * @param string $key The field group key. * @return bool True on success. */ public function delete_file( $key ) { $path = acf_get_setting( 'save_json' ); $file = untrailingslashit( $path ) . '/' . $key . '.json'; if ( is_readable( $file ) ) { unlink( $file ); return true; } return false; } /** * Includes all local JSON files. * * @date 10/03/2014 * @since 5.0.0 * @deprecated 5.9.0 * * @param void * @return void */ public function include_json_folders() { _deprecated_function( __METHOD__, '5.9.0', 'ACF_Local_JSON::include_fields()' ); $this->include_fields(); } /** * Includes local JSON files within a specific folder. * * @date 01/05/2017 * @since 5.5.13 * @deprecated 5.9.0 * * @param string $path The path to a specific JSON folder. * @return void */ public function include_json_folder( $path = '' ) { _deprecated_function( __METHOD__, '5.9.0' ); // Do nothing. } }