WordPress Version: 5.9
/**
* Finds the first non-empty `wp_navigation` Post.
*
* @return WP_Post|null the first non-empty Navigation or null.
*/
function block_core_navigation_get_first_non_empty_navigation()
{
// Order and orderby args set to mirror those in `wp_get_nav_menus`
// see:
// - https://github.com/WordPress/wordpress-develop/blob/ba943e113d3b31b121f77a2d30aebe14b047c69d/src/wp-includes/nav-menu.php#L613-L619.
// - https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters.
$parsed_args = array('post_type' => 'wp_navigation', 'no_found_rows' => true, 'order' => 'ASC', 'orderby' => 'name', 'post_status' => 'publish', 'posts_per_page' => 20);
$navigation_posts = new WP_Query($parsed_args);
foreach ($navigation_posts->posts as $navigation_post) {
if (has_blocks($navigation_post)) {
return $navigation_post;
}
}
return null;
}