<?php /** * Menu Transient, a function that helps with extremely large menus by storing the query in a transient * for ~24hrs. It can be used in template files to both store the transient and display the menu so there * is no need for multiple functions and queries. * * @param $name string A descriptive name of the menu (ex. "mobile-menu" or "quick-links"). * @param $args array The array of nav menu arguments. * * @return string The HTML formatted nav menu */ function menu_transient( $name = '', $args = array() ) { // prepare the name to be used in the tranient key $name = str_replace( '-', '_', $name ); // Get the transient if it exists $query = get_transient( $name . '_query' ); // Otherwise, create a new transient if( $query === false ) { $query = wp_nav_menu($args); set_transient( $name . '_query', $query, 60*60*24/* 24 Hours */ ); } // Display the nav menu echo $query; }