soderlind/super-admin-all-sites-menu

为超级管理员,将 WP 管理栏“我的站点”菜单替换为“所有站点”菜单。

安装: 227

依赖项: 0

建议者: 0

安全: 0

星标: 27

关注者: 3

分支: 3

开放问题: 4

类型:wordpress-plugin

1.6.7 2024-02-15 20:35 UTC

README

还可在 https://wordpresstheme.cn/plugins/super-admin-all-sites-menu/ 找到

使用 | 前提条件 | 安装 | 过滤器 | 演示 | 变更日志

为超级管理员,将 WP 管理栏“我的站点”菜单替换为“所有站点”菜单。

  • 不使用 switch_to_blog(),即“所有站点菜单”比“我的站点”菜单更快,资源消耗更少。
  • 子站点菜单数据存储在本地 IndexedDB 中(我说过它很快吗?)。当以下情况发生时,本地存储会更新:
    • 插件被激活。
    • 添加或删除站点。
    • 更改博客名称。
    • IndexedDB 与站点更改不同步。
    • 受限站点访问 被激活或停用。
  • 当更新子站点菜单数据时,使用 REST 并按增量进行(每个增量100个站点)。
  • 列出所有子站点。WP 管理栏“我的站点”仅列出您是本地管理员的站点。
  • 用红色图标标记有 受限站点访问 的站点。
  • 站点菜单按字母顺序排序。
  • 搜索过滤器。
  • 添加更多菜单选项
    • 在“网络管理员”下
      • 添加新站点
    • 按子站点。
      • “新建页面”
      • “用户”
      • “插件”
      • “设置”

WP REST API 与 admin-ajax.php 以及 Must-Use 插件:处理 WordPress 中的 AJAX 请求 启发,我编写了一个 必须使用插件,使插件从快速变为更快(约 60% 更快)。将 文件 保存在 mu-plugins 中。

使用

IndexedDB

菜单数据在本地 IndexedDB 中存储。

前提条件

  • WordPress 多站点
  • 现代浏览器,IE 11 不受支持。

安装

还可在 https://wordpresstheme.cn/plugins/super-admin-all-sites-menu/ 找到

过滤器

您可以使用以下过滤器来覆盖默认设置

  • all_sites_menu_order_by
    • 按菜单排序。默认值是 name,接受 idurlname
      add_filter( 'all_sites_menu_order_by', function( string $order_by ) : string {
      	return 'url';
      } );
  • all_sites_menu_load_increments
    • REST 加载增量。默认值是 100。
    add_filter( 'all_sites_menu_load_increments', function( int $increments ) : int {
    	return 300;
    } );
  • all_sites_menu_plugin_trigger
    • 当插件(停用)激活时,触发本地存储(IndexedDB)的更新。默认值是 [ 'restricted-site-access/restricted_site_access.php' ]

      注意:必须是数组,并且数组中的每个元素都必须指向主插件文件。语法 'plugin-dir/plugin-file.php'

     add_filter( 'all_sites_menu_plugin_trigger', function( array $plugins ) : array {
    	return [
    		'restricted-site-access/restricted_site_access.php',
    		'myplugin/myplugin.php',
    	];
    } );
  • all_sites_menu_search_threshold
    • 如果子站点数量少于 N,则不显示搜索字段。默认值是 20。
    add_filter( 'all_sites_menu_search_threshold', function( int $increments ) : int {
    	return 40;
    } );
  • all_sites_menu_force_refresh_expiration
    • 强制刷新应该进行的频率。默认值是 3600。将值设置为 0 以禁用强制刷新。
      add_filter( 'all_sites_menu_force_refresh_expiration', function( int $seconds ) : int {
      	return 3600;
      } );

演示

本地,在 VS Code 中

在本地使用VS Code dev containers,在WordPress多站环境中测试包含100个站点的插件。

  1. 您必须安装docker
  2. 在VS Code中,安装Remote - Containers扩展。
  3. 克隆Super Admin All Sites Menu: git clone https://github.com/soderlind/super-admin-all-sites-menu
  4. super-admin-all-sites-menu中,打开VS Code: code .
  5. 当VS Code打开时,点击重新打开容器
  6. 等待容器准备就绪,然后打开https://:8080/wp-admin/
    • 用户名: admin
    • 密码: password

在GitHub Codespaces

  1. 点击Code下拉菜单,选择在main上创建codespace
  2. 等待VS Code在浏览器中运行
  3. 在VS Code中,选择PORTS并点击本地地址 URL。
  4. /wp-admin附加到本地地址URL
    • 用户名: admin
    • 密码: password

流程

变更日志

查看CHANGELOG.md

致谢

版权和许可

Super Admin All Sites Menu版权属于2021年Per Soderlind

Super Admin All Sites Menu是免费软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为2,或(根据您的选择)任何更高版本。

Super Admin All Sites Menu是在希望它有用的希望下分发的,但没有任何保证;甚至没有关于其适销性或特定用途适用性的暗示保证。有关更多信息,请参阅GNU通用公共许可证。

您应该已随扩展程序一起收到GNU通用公共许可证的副本。如果没有,请参阅https://gnu.ac.cn/licenses/