You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改wp-admin/plugins.php插件计数及分页显示异常问题求助

解决WordPress插件页面隐藏插件后分页计数不更新的问题

我完全懂你的困扰——好不容易把目标插件从插件列表里藏起来了,结果顶部的分页计数还老老实实地显示着真实的插件总数,等于变相暴露了隐藏的插件。别着急,咱们来一步步搞定这个问题:

方法一:直接修改全局$totals变量(精准调整计数)

WP_Plugins_List_Table的prepare_items()方法里确实会用到全局的$totals变量来统计各状态的插件数量,咱们可以通过钩子在这个变量计算完成后修改它:

  1. 用plugins_list_table_prepare_items动作钩子,这个钩子会在列表准备完成后触发,正好适合调整计数:
add_action('plugins_list_table_prepare_items', 'adjust_hidden_plugin_totals');
function adjust_hidden_plugin_totals() {
    global $wp_list_table, $totals;
    
    // 替换成你实际隐藏的插件数量
    $hidden_count = 1;
    
    // 修改全局$totals里的"全部"计数
    if (isset($totals['all'])) {
        $totals['all'] -= $hidden_count;
    }
    
    // 同步修改分页参数,确保分页显示正确
    if (isset($wp_list_table->_pagination_args['total_items'])) {
        $wp_list_table->_pagination_args['total_items'] -= $hidden_count;
    }
    
    // 如果隐藏的是特定状态的插件(比如激活/未激活),还要对应修改该状态的计数
    // 示例:隐藏的是激活插件时
    // if (isset($totals['active'])) {
    //     $totals['active'] -= $hidden_count;
    // }
}
  1. 把这段代码放到你的主题functions.php或者自定义插件里,记得根据实际隐藏数量调整$hidden_count的值。

方法二:从源头过滤插件列表(更彻底的方案)

其实更稳妥的方式是直接在插件列表被获取时就过滤掉目标插件,这样$totals会自动基于过滤后的列表计算,不用手动修改计数,一举两得:

add_filter('all_plugins', 'filter_out_hidden_plugins');
function filter_out_hidden_plugins($plugins) {
    // 替换成你要隐藏的插件的完整标识(目录/文件名),比如"hello-dolly/hello.php"
    $plugin_to_hide = 'target-plugin/target-plugin.php';
    
    if (isset($plugins[$plugin_to_hide])) {
        unset($plugins[$plugin_to_hide]);
    }
    
    return $plugins;
}

这种方法的好处是,不仅分页计数会自动更新,所有依赖get_plugins()的地方都会同步看不到这个插件,避免出现其他场景下的计数不一致问题。

为什么直接修改_pagination_args没用?

你之前修改_pagination_args里的total_items没生效,是因为页面顶部的“全部(X)”文字是从全局$totals变量里取的值,而非直接使用分页参数的数字。所以必须同时修改$totals和分页参数,才能让计数和分页显示都正确。

内容的提问来源于stack exchange,提问作者Icarus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:34:13