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

How to Create a Winning Facebook Ad Campaign for Your Business

Introduction Creating a successful Facebook ad campaign is essential for small and medium-sized businesses looking… Read More

8 minutes ago

Why Small Businesses Need Facebook Marketing in 2025

Introduction In 2025, Facebook remains one of the most powerful platforms for small and medium-sized… Read More

1 day ago

Summary of Key Trading Rules Followed by Expert Pro Traders

Expert traders have honed their craft over years of market observation, trial, and error. Their… Read More

1 day ago

Master Google Ads: Top 10 PPC Strategies for 2025 Success

Overview As we step into 2025, mastering Google Ads PPC strategies is essential for businesses… Read More

2 months ago

How TF-IDF Impacts SEO?

Introduction to TF-IDF: A Beginner's Guide with Real-World Examples Search engines like Google aim to… Read More

2 months ago

How to Save $500 a Year with These Energy-Efficient Smart Devices

Introduction In today’s world, rising energy costs are a concern for many households. But what… Read More

2 months ago

This website uses cookies.