ACF_Admin_Tool_Import{}ACF 1.0

Хуков нет.

Использование

$ACF_Admin_Tool_Import = new ACF_Admin_Tool_Import();
// use class methods

Методы

  1. public html()
  2. public initialize()
  3. public submit()

Код ACF_Admin_Tool_Import{} ACF 6.0.4

<?php
class ACF_Admin_Tool_Import extends ACF_Admin_Tool {


	/**
	 *  initialize
	 *
	 *  This function will initialize the admin tool
	 *
	 *  @date    10/10/17
	 *  @since   5.6.3
	 *
	 *  @param   n/a
	 *  @return  n/a
	 */

	function initialize() {

		// vars
		$this->name  = 'import';
		$this->title = __( 'Import Field Groups', 'acf' );
		$this->icon  = 'dashicons-upload';

	}


	/**
	 *  html
	 *
	 *  This function will output the metabox HTML
	 *
	 *  @date    10/10/17
	 *  @since   5.6.3
	 *
	 *  @param   n/a
	 *  @return  n/a
	 */

	function html() {

		?>
	<div class="acf-postbox-header">
		<h2 class="acf-postbox-title"><?php _e( 'Import Field Groups', 'acf' ); ?></h2>
		<div class="acf-tip"><i tabindex="0" class="acf-icon acf-icon-help acf-js-tooltip" title="<?php esc_attr_e( 'Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups', 'acf' ); ?>">?</i></div>
	</div>
	<div class="acf-postbox-inner">
		<div class="acf-fields">
			<?php

			acf_render_field_wrap(
				array(
					'label'    => __( 'Select File', 'acf' ),
					'type'     => 'file',
					'name'     => 'acf_import_file',
					'value'    => false,
					'uploader' => 'basic',
				)
			);

			?>
		</div>
		<p class="acf-submit">
			<input type="submit" class="acf-btn" value="<?php _e( 'Import JSON', 'acf' ); ?>" />
		</p>
	</div>
		<?php

	}


	/**
	 *  submit
	 *
	 *  This function will run when the tool's form has been submit
	 *
	 *  @date    10/10/17
	 *  @since   5.6.3
	 *
	 *  @param   n/a
	 *  @return  n/a
	 */

	function submit() {

		// Check file size.
		if ( empty( $_FILES['acf_import_file']['size'] ) ) {
			return acf_add_admin_notice( __( 'No file selected', 'acf' ), 'warning' );
		}

		$file = acf_sanitize_files_array( $_FILES['acf_import_file'] );

		// Check errors.
		if ( $file['error'] ) {
			return acf_add_admin_notice( __( 'Error uploading file. Please try again', 'acf' ), 'warning' );
		}

		// Check file type.
		if ( pathinfo( $file['name'], PATHINFO_EXTENSION ) !== 'json' ) {
			return acf_add_admin_notice( __( 'Incorrect file type', 'acf' ), 'warning' );
		}

		// Read JSON.
		$json = file_get_contents( $file['tmp_name'] );
		$json = json_decode( $json, true );

		// Check if empty.
		if ( ! $json || ! is_array( $json ) ) {
			return acf_add_admin_notice( __( 'Import file empty', 'acf' ), 'warning' );
		}

		// Ensure $json is an array of groups.
		if ( isset( $json['key'] ) ) {
			$json = array( $json );
		}

		// Remeber imported field group ids.
		$ids = array();

		// Loop over json
		foreach ( $json as $field_group ) {

			// Search database for existing field group.
			$post = acf_get_field_group_post( $field_group['key'] );
			if ( $post ) {
				$field_group['ID'] = $post->ID;
			}

			// Import field group.
			$field_group = acf_import_field_group( $field_group );

			// append message
			$ids[] = $field_group['ID'];
		}

		// Count number of imported field groups.
		$total = count( $ids );

		// Generate text.
		$text = sprintf( _n( 'Imported 1 field group', 'Imported %s field groups', $total, 'acf' ), $total );

		// Add links to text.
		$links = array();
		foreach ( $ids as $id ) {
			$links[] = '<a href="' . get_edit_post_link( $id ) . '">' . get_the_title( $id ) . '</a>';
		}
		$text .= ' ' . implode( ', ', $links );

		// Add notice
		acf_add_admin_notice( $text, 'success' );
	}
}