View API

Make uses “views” to determine which layout settings to apply to a given page load.

A view definition consists of a view ID that corresponds to an array of properties. The required properties for a view are a label and a callback function that determines whether it qualifies to be the current view. A third, optional property is priority, which determines which view will take precedent when the current view qualifies for multiple views. A higher priority will take precedent over a lower.


Example: Add views for a “tea” custom post type

function childtheme_add_tea_views() {
	make_update_view_definition(
		'tea',
		array(
			'label'    => __( 'Tea', 'make-child' ),
			'callback' => 'childtheme_is_tea',
			'priority' => 20
		)
	);

	make_update_view_definition(
		'tea-menu',
		array(
			'label'    => __( 'Tea Menu', 'make-child' ),
			'callback' => 'childtheme_is_tea_menu',
			'priority' => 20
		)
	);
}

add_action( 'make_view_loaded', 'childtheme_add_tea_views' );

In the above example, the make_update_view_definition() function takes two parameters. The first is a unique ID for the view. The second is an associative array of view properties. The required properties are a public label and a callback function that determines whether it qualifies to be the current view. A third, optional property is priority, which determines which view will take precedent when the current view qualifies for multiple views. A higher priority will take precedent over a lower.

The callback functions from the above example might look something like this:

function childtheme_is_tea() {
	return is_singular( 'tea' );
}

function childtheme_is_tea_menu() {
	return is_post_type_archive( 'tea' );
}