
Hello, I have a fairly hefty multi site with 2000+ sites and I’m concerned over how the “network_admin_menu” hooks loops over every website and performs upgrade checks on every page load of the network admin page.
the start of the code in question
// Loop over sites and check for upgrades.
$sites = get_sites( array( 'number' => 0 ) );
The speed difference I see is a page load of 0.1 seconds without vs 1.5 seconds with and growing for every site we onboard.
with 2000+ websites thats 2000+ extra select statements to fetch this on every page load.
as an Interim, I’ve suppressed this check which isn’t ideal at all
/**
* This searches and destroys the acf "network_admin_menu" hook used for "upgrading" ACF
* app/web/app/mu-plugins/advanced-custom-fields-pro/includes/admin/admin-upgrade.php
*/
function remove_acf_network_admin_menu_action()
{
if( class_Exists( '\ACF_Admin_Upgrade' ) )
{
global $wp_filter;
if( isset( $wp_filter[ 'network_admin_menu' ] ) and $wp_filter[ 'network_admin_menu' ] instanceof \WP_Hook )
{
foreach( $wp_filter[ 'network_admin_menu' ] as $priority => $actions )
{
if( is_array( $actions ) )
{
foreach( $actions as $action )
{
if( isset( $action['function'][0] ) and $action['function'][0] instanceof \ACF_Admin_Upgrade )
{
remove_action( 'network_admin_menu', $action['function'], $priority );
}
}
}
}
}
}
}
I’d like to make a suggestion for the developers and that is under the context of a network enable multi site installation, that the “acf_version” tracking option is moved to the new “wp_blogmeta” table when available, meaning it could be queried as a single statement for all sites.
https://make.wordpress.org/core/2019/01/28/multisite-support-for-site-metadata-in-5-1/
Does this make sense?
You’d need to make this suggestion to the developer here https://www.advancedcustomfields.com/contact/