Speed up WordPress CMS Menu Loading

Overview

We can customize the WordPress navigation menus with writing few lines of codes.

wp_nav_menu is the WordPress menu function to display custom menus created in domain.com/wp-admin>Appearance>Menus panel . It is a must use function but it’s not perfect for all website or projects. Default menu function OK for small websites but if your site is large and have more traffic with several menus then It may create website speed and performance issues.

What should i do for performance upgrade for wp_nav_menu?

Majority site menu are not updated frequently so its a good idea to cache your menus for long expired period.

How to cache your menu?

If your WordPress version is 3.9+ you can use Transients API and pre_wp_nav_menu. I am not going to write long story here. for your convenience i added my code below.

Please copy this code and past it to you Theme function.php file

/**
* Cache wp_nav_menu to speed up your wordpress blog menus. you can customize this code as your need.
**/
add_filter( 'pre_wp_nav_menu', 'ct_get_nav_menu_cache', 10, 2 );
function ct_get_nav_menu_cache( $nav_menu, $args ) {
    $cache_key      = ct_get_nav_menu_cache_key($args);
    $cached_menu    = get_transient( $cache_key );
    if ( ! empty( $cached_menu ) )
        return $cached_menu;
 
    return $nav_menu;
}
 
add_filter( 'wp_nav_menu', 'ct_set_nav_menu_cache', 10, 2 );
function ct_set_nav_menu_cache( $nav_menu, $args ) {
    $cache_key      = ct_get_nav_menu_cache_key($args);
    set_transient( $cache_key, $nav_menu, 86400 );
 
    return $nav_menu;
}
 
function ct_get_nav_menu_cache_key($args){
    $timestamp = get_transient('nav-menu-cache-timestamp');
    if($time === false){
        $timestamp = time();
        set_transient( 'nav-menu-cache-timestamp', $time, 86400 );
    }
    return apply_filters( 'nav_menu_cache_key' , 'nav-menu-' . md5( serialize( $args ) ) . $timestamp );
}
 
// delete the cache when update the menu
add_action( 'wp_update_nav_menu', 'ct_delete_nav_menu_cache' );
function ct_delete_nav_menu_cache( $menu_id, $menu_data){
    set_transient( 'nav-menu-cache-timestamp', time(), 86400 );
}

Comments

comments

Shayed

Share
Published by
Shayed

Recent Posts

Master the Art of 360-Degree Marketing Campaigns for Guaranteed Success

In today’s competitive market, standing out requires more than just a strong message. A 360-degree… Read More

1 week ago

Step-by-Step Guide to Setting Up a Secure Private Cloud Server for Your Startup

If you’re ready to take control of your organization’s data by setting up a private… Read More

2 months ago

Step-by-Step Guide to Setting Up a Secure Private Cloud Server for Your Organization.

Building a private cloud involves creating a virtualized environment where you can manage, store, and… Read More

2 months ago

Flex AI: The Future of Flexible Artificial Intelligence

In the rapidly evolving landscape of artificial intelligence, Flex AI stands as a transformative force,… Read More

3 months ago

iPhone 16 Pro and Pro Max: A Comprehensive Overview of Apple’s Latest Flagships

Apple is set to once again make waves in the smartphone market with the iPhone… Read More

3 months ago

How to Save a Water Damaged iPhone

Act quickly! The sooner you take action, the better your chances of saving your water… Read More

5 months ago

This website uses cookies.