wppaste
WordPress

WP_Navigation_Fallback

Since
6.3.0
Source
wp-includes/class-wp-navigation-fallback.php:17
Manages fallback behavior for Navigation menus.

Compatibility

WordPress
since 6.3.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Hooks and filters fired · 1

Every hook that fires from inside WP_Navigation_Fallback, in the order it appears in the class, grouped by the method that fires it.

Methods · 10

Source code

class WP_Navigation_Fallback { 	/**	 * Updates the wp_navigation custom post type schema, in order to expose	 * additional fields in the embeddable links of WP_REST_Navigation_Fallback_Controller.	 *	 * The Navigation Fallback endpoint may embed the full Navigation Menu object	 * into the response as the `self` link. By default, the Posts Controller	 * will only expose a limited subset of fields but the editor requires	 * additional fields to be available in order to utilize the menu.	 *	 * Used with the `rest_wp_navigation_item_schema` hook.	 *	 * @since 6.4.0	 *	 * @param array $schema The schema for the `wp_navigation` post.	 * @return array The modified schema.	 */	public static function update_wp_navigation_post_schema( $schema ) {		// Expose top level fields.		$schema['properties']['status']['context']  = array_merge( $schema['properties']['status']['context'], array( 'embed' ) );		$schema['properties']['content']['context'] = array_merge( $schema['properties']['content']['context'], array( 'embed' ) ); 		/*		 * Exposes sub properties of content field.		 * These sub properties aren't exposed by the posts controller by default,		 * for requests where context is `embed`.		 *		 * @see WP_REST_Posts_Controller::get_item_schema()		 */		$schema['properties']['content']['properties']['raw']['context']           = array_merge( $schema['properties']['content']['properties']['raw']['context'], array( 'embed' ) );		$schema['properties']['content']['properties']['rendered']['context']      = array_merge( $schema['properties']['content']['properties']['rendered']['context'], array( 'embed' ) );		$schema['properties']['content']['properties']['block_version']['context'] = array_merge( $schema['properties']['content']['properties']['block_version']['context'], array( 'embed' ) ); 		/*		 * Exposes sub properties of title field.		 * These sub properties aren't exposed by the posts controller by default,		 * for requests where context is `embed`.		 *		 * @see WP_REST_Posts_Controller::get_item_schema()		 */		$schema['properties']['title']['properties']['raw']['context'] = array_merge( $schema['properties']['title']['properties']['raw']['context'], array( 'embed' ) ); 		return $schema;	} 	/**	 * Gets (and/or creates) an appropriate fallback Navigation Menu.	 *	 * @since 6.3.0	 *	 * @return WP_Post|null the fallback Navigation Post or null.	 */	public static function get_fallback() {		/**		 * Filters whether or not a fallback should be created.		 *		 * @since 6.3.0		 *		 * @param bool $create Whether to create a fallback navigation menu. Default true.		 */		$should_create_fallback = apply_filters( 'wp_navigation_should_create_fallback', true ); 		$fallback = static::get_most_recently_published_navigation(); 		if ( $fallback || ! $should_create_fallback ) {			return $fallback;		} 		$fallback = static::create_classic_menu_fallback(); 		if ( $fallback && ! is_wp_error( $fallback ) ) {			// Return the newly created fallback post object which will now be the most recently created navigation menu.			return $fallback instanceof WP_Post ? $fallback : static::get_most_recently_published_navigation();		} 		$fallback = static::create_default_fallback(); 		if ( $fallback && ! is_wp_error( $fallback ) ) {			// Return the newly created fallback post object which will now be the most recently created navigation menu.

Changelog

Introduced in 6.3.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/class-wp-navigation-fallback.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.