ACF\Site_Health

Site_Health::get_site_health_valuespublicACF 6.3

Gets the values for all data in the ACF site health section.

Метод класса: Site_Health{}

Возвращает

Массив.

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

$Site_Health = new Site_Health();
$Site_Health->get_site_health_values(): array;

Список изменений

С версии 6.3 Введена.

Код Site_Health::get_site_health_values() ACF 6.4.2

public function get_site_health_values(): array {
	global $wpdb;

	$fields         = array();
	$is_pro         = acf_is_pro();
	$license        = $is_pro ? acf_pro_get_license() : array();
	$license_status = $is_pro ? acf_pro_get_license_status() : array();
	$field_groups   = acf_get_field_groups();
	$post_types     = acf_get_post_types();
	$taxonomies     = acf_get_taxonomies();

	$yes = __( 'Yes', 'acf' );
	$no  = __( 'No', 'acf' );

	$fields['version'] = array(
		'label' => __( 'Plugin Version', 'acf' ),
		'value' => defined( 'ACF_VERSION' ) ? ACF_VERSION : '',
	);

	$fields['plugin_type'] = array(
		'label' => __( 'Plugin Type', 'acf' ),
		'value' => $is_pro ? __( 'PRO', 'acf' ) : __( 'Free', 'acf' ),
		'debug' => $is_pro ? 'PRO' : 'Free',
	);

	$fields['update_source'] = array(
		'label' => __( 'Update Source', 'acf' ),
		'value' => apply_filters( 'acf/site_health/update_source', __( 'wordpress.org', 'acf' ) ),
	);

	if ( $is_pro ) {
		$fields['activated'] = array(
			'label' => __( 'License Activated', 'acf' ),
			'value' => ! empty( $license ) ? $yes : $no,
			'debug' => ! empty( $license ),
		);

		$fields['activated_url'] = array(
			'label' => __( 'Licensed URL', 'acf' ),
			'value' => ! empty( $license['url'] ) ? $license['url'] : '',
		);

		$fields['license_type'] = array(
			'label' => __( 'License Type', 'acf' ),
			'value' => $license_status['name'],
		);

		$fields['license_status'] = array(
			'label' => __( 'License Status', 'acf' ),
			'value' => $license_status['status'],
		);

		$expiry = ! empty( $license_status['expiry'] ) ? $license_status['expiry'] : '';
		$format = get_option( 'date_format', 'F j, Y' );

		$fields['subscription_expires'] = array(
			'label' => __( 'Subscription Expiry Date', 'acf' ),
			'value' => is_numeric( $expiry ) ? date_i18n( $format, $expiry ) : '',
			'debug' => $expiry,
		);
	}

	$fields['wp_version'] = array(
		'label' => __( 'WordPress Version', 'acf' ),
		'value' => get_bloginfo( 'version' ),
	);

	$fields['mysql_version'] = array(
		'label' => __( 'MySQL Version', 'acf' ),
		'value' => $wpdb->db_server_info(),
	);

	$fields['is_multisite'] = array(
		'label' => __( 'Is Multisite', 'acf' ),
		'value' => is_multisite() ? __( 'Yes', 'acf' ) : __( 'No', 'acf' ),
		'debug' => is_multisite(),
	);

	$active_theme = wp_get_theme();
	$parent_theme = $active_theme->parent();

	$fields['active_theme'] = array(
		'label' => __( 'Active Theme', 'acf' ),
		'value' => array(
			'name'       => $active_theme->get( 'Name' ),
			'version'    => $active_theme->get( 'Version' ),
			'theme_uri'  => $active_theme->get( 'ThemeURI' ),
			'stylesheet' => $active_theme->get( 'Stylesheet' ),
		),
	);

	if ( $parent_theme ) {
		$fields['parent_theme'] = array(
			'label' => __( 'Parent Theme', 'acf' ),
			'value' => array(
				'name'       => $parent_theme->get( 'Name' ),
				'version'    => $parent_theme->get( 'Version' ),
				'theme_uri'  => $parent_theme->get( 'ThemeURI' ),
				'stylesheet' => $parent_theme->get( 'Stylesheet' ),
			),
		);
	}

	$active_plugins = array();
	$plugins        = get_plugins();

	foreach ( $plugins as $plugin_path => $plugin ) {
		if ( ! is_plugin_active( $plugin_path ) ) {
			continue;
		}

		$active_plugins[ $plugin_path ] = array(
			'name'       => $plugin['Name'],
			'version'    => $plugin['Version'],
			'plugin_uri' => empty( $plugin['PluginURI'] ) ? '' : $plugin['PluginURI'],
		);
	}

	$fields['active_plugins'] = array(
		'label' => __( 'Active Plugins', 'acf' ),
		'value' => $active_plugins,
	);

	$ui_field_groups = array_filter(
		$field_groups,
		function ( $field_group ) {
			return empty( $field_group['local'] );
		}
	);

	$fields['ui_field_groups'] = array(
		'label' => __( 'Registered Field Groups (UI)', 'acf' ),
		'value' => number_format_i18n( count( $ui_field_groups ) ),
	);

	$php_field_groups = array_filter(
		$field_groups,
		function ( $field_group ) {
			return ! empty( $field_group['local'] ) && 'PHP' === $field_group['local'];
		}
	);

	$fields['php_field_groups'] = array(
		'label' => __( 'Registered Field Groups (PHP)', 'acf' ),
		'value' => number_format_i18n( count( $php_field_groups ) ),
	);

	$json_field_groups = array_filter(
		$field_groups,
		function ( $field_group ) {
			return ! empty( $field_group['local'] ) && 'json' === $field_group['local'];
		}
	);

	$fields['json_field_groups'] = array(
		'label' => __( 'Registered Field Groups (JSON)', 'acf' ),
		'value' => number_format_i18n( count( $json_field_groups ) ),
	);

	$rest_field_groups = array_filter(
		$field_groups,
		function ( $field_group ) {
			return ! empty( $field_group['show_in_rest'] );
		}
	);

	$fields['rest_field_groups'] = array(
		'label' => __( 'Field Groups Enabled for REST API', 'acf' ),
		'value' => number_format_i18n( count( $rest_field_groups ) ),
	);

	$graphql_field_groups = array_filter(
		$field_groups,
		function ( $field_group ) {
			return ! empty( $field_group['show_in_graphql'] );
		}
	);

	if ( is_plugin_active( 'wpgraphql-acf/wpgraphql-acf.php' ) ) {
		$fields['graphql_field_groups'] = array(
			'label' => __( 'Field Groups Enabled for GraphQL', 'acf' ),
			'value' => number_format_i18n( count( $graphql_field_groups ) ),
		);
	}

	$all_fields   = array();
	$object_types = array();
	$all_rules    = array();

	foreach ( $field_groups as $field_group ) {
		$all_fields = array_merge( $all_fields, acf_get_fields( $field_group ) );

		foreach ( $field_group['location'] as $rules ) {
			foreach ( $rules as $rule ) {
				$all_rules[] = $rule['param'] . $rule['operator'] . $rule['value'];

				if ( ! $is_pro ) {
					continue;
				}

				$location = acf_get_location_type( $rule['param'] );
				if ( ! $location ) {
					continue;
				}

				$location_type                         = $location->get_object_type( $rule );
				$object_types[ $field_group['key'] ][] = $location_type;
			}
		}
	}

	$fields['all_location_rules'] = array(
		'label' => __( 'All Location Rules', 'acf' ),
		'value' => array_values( array_unique( $all_rules ) ),
	);

	if ( $is_pro ) {
		$field_groups_with_single_block_rule      = 0;
		$field_groups_with_multiple_block_rules   = 0;
		$field_groups_with_blocks_and_other_rules = 0;

		foreach ( $object_types as $types ) {
			$num_types = array_count_values( $types );

			// Bail if no block location rules.
			if ( empty( $num_types['block'] ) ) {
				continue;
			}

			if ( count( $num_types ) === 1 ) {
				// Field group is only assigned to blocks.
				if ( $num_types['block'] === 1 ) {
					++$field_groups_with_single_block_rule;
				} else {
					++$field_groups_with_multiple_block_rules;
				}
			} else {
				// Field group is assigned to blocks & other stuff.
				++$field_groups_with_blocks_and_other_rules;
			}
		}

		$fields['field_groups_with_single_block_rule'] = array(
			'label' => __( 'Number of Field Groups with a Single Block Location', 'acf' ),
			'value' => number_format_i18n( $field_groups_with_single_block_rule ),
		);

		$fields['field_groups_with_multiple_block_rules'] = array(
			'label' => __( 'Number of Field Groups with Multiple Block Locations', 'acf' ),
			'value' => number_format_i18n( $field_groups_with_multiple_block_rules ),
		);

		$fields['field_groups_with_blocks_and_other_rules'] = array(
			'label' => __( 'Number of Field Groups with Blocks and Other Locations', 'acf' ),
			'value' => number_format_i18n( $field_groups_with_blocks_and_other_rules ),
		);
	}

	$fields_by_type             = array();
	$third_party_fields_by_type = array();
	$core_field_types           = array_keys( acf_get_field_types() );

	foreach ( $all_fields as $field ) {
		if ( in_array( $field['type'], $core_field_types, true ) ) {
			if ( ! isset( $fields_by_type[ $field['type'] ] ) ) {
				$fields_by_type[ $field['type'] ] = 0;
			}

			++$fields_by_type[ $field['type'] ];

			continue;
		}

		if ( ! isset( $third_party_fields_by_type[ $field['type'] ] ) ) {
			$third_party_fields_by_type[ $field['type'] ] = 0;
		}

		++$third_party_fields_by_type[ $field['type'] ];
	}

	$fields['number_of_fields_by_type'] = array(
		'label' => __( 'Number of Fields by Field Type', 'acf' ),
		'value' => $fields_by_type,
	);

	$fields['number_of_third_party_fields_by_type'] = array(
		'label' => __( 'Number of Third Party Fields by Field Type', 'acf' ),
		'value' => $third_party_fields_by_type,
	);

	$enable_post_types = acf_get_setting( 'enable_post_types' );

	$fields['post_types_enabled'] = array(
		'label' => __( 'Post Types and Taxonomies Enabled', 'acf' ),
		'value' => $enable_post_types ? $yes : $no,
		'debug' => $enable_post_types,
	);

	$ui_post_types = array_filter(
		$post_types,
		function ( $post_type ) {
			return empty( $post_type['local'] );
		}
	);

	$fields['ui_post_types'] = array(
		'label' => __( 'Registered Post Types (UI)', 'acf' ),
		'value' => number_format_i18n( count( $ui_post_types ) ),
	);

	$json_post_types = array_filter(
		$post_types,
		function ( $post_type ) {
			return ! empty( $post_type['local'] ) && 'json' === $post_type['local'];
		}
	);

	$fields['json_post_types'] = array(
		'label' => __( 'Registered Post Types (JSON)', 'acf' ),
		'value' => number_format_i18n( count( $json_post_types ) ),
	);

	$ui_taxonomies = array_filter(
		$taxonomies,
		function ( $taxonomy ) {
			return empty( $taxonomy['local'] );
		}
	);

	$fields['ui_taxonomies'] = array(
		'label' => __( 'Registered Taxonomies (UI)', 'acf' ),
		'value' => number_format_i18n( count( $ui_taxonomies ) ),
	);

	$json_taxonomies = array_filter(
		$taxonomies,
		function ( $taxonomy ) {
			return ! empty( $taxonomy['local'] ) && 'json' === $taxonomy['local'];
		}
	);

	$fields['json_taxonomies'] = array(
		'label' => __( 'Registered Taxonomies (JSON)', 'acf' ),
		'value' => number_format_i18n( count( $json_taxonomies ) ),
	);

	if ( $is_pro ) {
		$enable_options_pages_ui = acf_get_setting( 'enable_options_pages_ui' );

		$fields['ui_options_pages_enabled'] = array(
			'label' => __( 'Options Pages UI Enabled', 'acf' ),
			'value' => $enable_options_pages_ui ? $yes : $no,
			'debug' => $enable_options_pages_ui,
		);

		$options_pages    = acf_get_options_pages();
		$ui_options_pages = array();

		if ( empty( $options_pages ) || ! is_array( $options_pages ) ) {
			$options_pages = array();
		}

		if ( $enable_options_pages_ui ) {
			$ui_options_pages = acf_get_ui_options_pages();

			$ui_options_pages_in_ui = array_filter(
				$ui_options_pages,
				function ( $ui_options_page ) {
					return empty( $ui_options_page['local'] );
				}
			);

			$json_options_pages = array_filter(
				$ui_options_pages,
				function ( $ui_options_page ) {
					return ! empty( $ui_options_page['local'] );
				}
			);

			$fields['ui_options_pages'] = array(
				'label' => __( 'Registered Options Pages (UI)', 'acf' ),
				'value' => number_format_i18n( count( $ui_options_pages_in_ui ) ),
			);

			$fields['json_options_pages'] = array(
				'label' => __( 'Registered Options Pages (JSON)', 'acf' ),
				'value' => number_format_i18n( count( $json_options_pages ) ),
			);
		}

		$ui_options_page_slugs = array_column( $ui_options_pages, 'menu_slug' );
		$php_options_pages     = array_filter(
			$options_pages,
			function ( $options_page ) use ( $ui_options_page_slugs ) {
				return ! in_array( $options_page['menu_slug'], $ui_options_page_slugs, true );
			}
		);

		$fields['php_options_pages'] = array(
			'label' => __( 'Registered Options Pages (PHP)', 'acf' ),
			'value' => number_format_i18n( count( $php_options_pages ) ),
		);
	}

	$rest_api_format = acf_get_setting( 'rest_api_format' );

	$fields['rest_api_format'] = array(
		'label' => __( 'REST API Format', 'acf' ),
		'value' => 'standard' === $rest_api_format ? __( 'Standard', 'acf' ) : __( 'Light', 'acf' ),
		'debug' => $rest_api_format,
	);

	if ( $is_pro ) {
		$fields['registered_acf_blocks'] = array(
			'label' => __( 'Registered ACF Blocks', 'acf' ),
			'value' => number_format_i18n( acf_pro_get_registered_block_count() ),
		);

		$blocks                 = acf_get_block_types();
		$block_api_versions     = array();
		$acf_block_versions     = array();
		$blocks_using_post_meta = 0;

		foreach ( $blocks as $block ) {
			if ( ! isset( $block_api_versions[ 'v' . $block['api_version'] ] ) ) {
				$block_api_versions[ 'v' . $block['api_version'] ] = 0;
			}

			if ( ! isset( $acf_block_versions[ 'v' . $block['acf_block_version'] ] ) ) {
				$acf_block_versions[ 'v' . $block['acf_block_version'] ] = 0;
			}

			if ( ! empty( $block['use_post_meta'] ) ) {
				++$blocks_using_post_meta;
			}

			++$block_api_versions[ 'v' . $block['api_version'] ];
			++$acf_block_versions[ 'v' . $block['acf_block_version'] ];
		}

		$fields['blocks_per_api_version'] = array(
			'label' => __( 'Blocks Per API Version', 'acf' ),
			'value' => $block_api_versions,
		);

		$fields['blocks_per_acf_block_version'] = array(
			'label' => __( 'Blocks Per ACF Block Version', 'acf' ),
			'value' => $acf_block_versions,
		);

		$fields['blocks_using_post_meta'] = array(
			'label' => __( 'Blocks Using Post Meta', 'acf' ),
			'value' => number_format_i18n( $blocks_using_post_meta ),
		);

		$preload_blocks = acf_get_setting( 'preload_blocks' );

		$fields['preload_blocks'] = array(
			'label' => __( 'Block Preloading Enabled', 'acf' ),
			'value' => ! empty( $preload_blocks ) ? $yes : $no,
			'debug' => $preload_blocks,
		);
	}

	$show_admin = acf_get_setting( 'show_admin' );

	$fields['admin_ui_enabled'] = array(
		'label' => __( 'Admin UI Enabled', 'acf' ),
		'value' => $show_admin ? $yes : $no,
		'debug' => $show_admin,
	);

	$field_type_modal_enabled = apply_filters( 'acf/field_group/enable_field_browser', true );

	$fields['field_type-modal_enabled'] = array(
		'label' => __( 'Field Type Modal Enabled', 'acf' ),
		'value' => ! empty( $field_type_modal_enabled ) ? $yes : $no,
		'debug' => $field_type_modal_enabled,
	);

	$field_settings_tabs_enabled = apply_filters( 'acf/field_group/disable_field_settings_tabs', false );

	$fields['field_settings_tabs_enabled'] = array(
		'label' => __( 'Field Settings Tabs Enabled', 'acf' ),
		'value' => empty( $field_settings_tabs_enabled ) ? $yes : $no,
		'debug' => $field_settings_tabs_enabled,
	);

	$shortcode_enabled = acf_get_setting( 'enable_shortcode' );

	$fields['shortcode_enabled'] = array(
		'label' => __( 'Shortcode Enabled', 'acf' ),
		'value' => ! empty( $shortcode_enabled ) ? $yes : $no,
		'debug' => $shortcode_enabled,
	);

	$fields['registered_acf_forms'] = array(
		'label' => __( 'Registered ACF Forms', 'acf' ),
		'value' => number_format_i18n( count( acf_get_forms() ) ),
	);

	$local_json = acf_get_instance( 'ACF_Local_JSON' );
	$save_paths = $local_json->get_save_paths();
	$load_paths = $local_json->get_load_paths();

	$fields['json_save_paths'] = array(
		'label' => __( 'JSON Save Paths', 'acf' ),
		'value' => number_format_i18n( count( $save_paths ) ),
		'debug' => count( $save_paths ),
	);

	$fields['json_load_paths'] = array(
		'label' => __( 'JSON Load Paths', 'acf' ),
		'value' => number_format_i18n( count( $load_paths ) ),
		'debug' => count( $load_paths ),
	);

	return $fields;
}