wpseek.com
A WordPress-centric search engine for devs and theme authors



wp_get_entity_view_config › WordPress Function

Since7.1.0
Deprecatedn/a
wp_get_entity_view_config ( $kind, $name )
Parameters: (2)
  • (string) $kind The entity kind (e.g. `postType`).
    Required: Yes
  • (string) $name The entity name (e.g. `page`).
    Required: Yes
Returns:
  • (array) {
    The view configuration for the entity.

    @type array $default_view Default view configuration.
    @type array $default_layouts Default layouts configuration.
    @type array $view_list List of available views.
    @type array $form Form configuration.
    }
Defined at:
Codex:

Returns the view configuration for the given entity.

Builds the default configuration shared by all entities and then exposes it through the dynamic get_entity_view_config_{$kind}_{$name} filter so that core and third parties can provide the configuration for a specific entity.


Source

function wp_get_entity_view_config( $kind, $name ) {
	$default_view    = array(
		'type'       => 'table',
		'filters'    => array(),
		'sort'       => array(
			'field'     => 'title',
			'direction' => 'asc',
		),
		'perPage'    => 20,
		'fields'     => array( 'author', 'status' ),
		'titleField' => 'title',
	);
	$default_layouts = array(
		'table' => array(),
		'grid'  => array(),
		'list'  => array(),
	);
	$all_items_title = __( 'All items' );
	if ( 'postType' === $kind ) {
		$post_type_object = get_post_type_object( $name );
		if ( $post_type_object && ! empty( $post_type_object->labels->all_items ) ) {
			$all_items_title = $post_type_object->labels->all_items;
		}
	}
	$view_list = array(
		array(
			'title' => $all_items_title,
			'slug'  => 'all',
		),
	);

	$config = array(
		'default_view'    => $default_view,
		'default_layouts' => $default_layouts,
		'view_list'       => $view_list,
		'form'            => array(),
	);

	/**
	 * Filters the view configuration for a given entity.
	 *
	 * The dynamic portions of the hook name, `$kind` and `$name`, refer to the
	 * entity kind (e.g. `postType`) and the entity name (e.g. `page`).
	 *
	 * @since 7.1.0
	 *
	 * @param array $config {
	 *     The view configuration for the entity.
	 *
	 *     @type array $default_view    Default view configuration.
	 *     @type array $default_layouts Default layouts configuration.
	 *     @type array $view_list       List of available views.
	 *     @type array $form            Form configuration.
	 * }
	 * @param array $entity {
	 *     The entity the configuration is built for.
	 *
	 *     @type string $kind The entity kind.
	 *     @type string $name The entity name.
	 * }
	 */
	$filtered_config = apply_filters(
		"get_entity_view_config_{$kind}_{$name}",
		$config,
		array(
			'kind' => $kind,
			'name' => $name,
		)
	);

	if ( ! is_array( $filtered_config ) ) {
		return $config;
	}

	// Backfill any dropped keys with their defaults, then discard any keys the
	// filter introduced that are not part of the documented configuration shape.
	$filtered_config = array_merge( $config, $filtered_config );
	return array_intersect_key( $filtered_config, $config );
}