WPJAM Basic 5.9 详细更新说明
昨天 WordPress 5.9 发布,我第一时间就升级了测试站点到 WordPress 5.9,经过一天的观察,没有发现什么问题。
因为 WordPress 5.9 的更新主要还是围绕块编辑器。其他功能没有很大的改进,所以插件几乎没有什么兼容的问题,感觉 WordPress 目前的新版的开发方向就是块编辑器一条道走到黑啊。
这次 WPJAM Basic 更新到 5.9,除了简单兼容 WordPress 5.9 之外,还有以下功能:
去掉讨论组
去掉 WPJAM Basic 自带讨论组这个其实很早就有想法了,主要感觉帮不到真正碰到问题的人,很多人提问又是只言片语,根本不知道发生什么了,然后不回复又被喷装逼高冷,讨论组本来是一个很好的产品,最后却成为负担,这不是我想看到的。
然后前段时间,微信又限制了,订阅号彻底获取不到头像和昵称了,服务号也要绕一大圈才能获取,我不想看到有人提问,都是没有头像和昵称的,然后也不想通过复杂的网页授权方式获取头像和昵称,所以正好借此机会关闭讨论组了。
那么以后碰到问题怎么办?首先还是自己去 Debug,我之前提供了详细的 WordPress 如何 debug 的教程,你参考处理,如果处理不了,提供 log,直接在本公众号留言,我看到,如果信息完备,然后感觉是 WPJAM Basic 的问题,我回复并处理。
兼容 WooCommerce
之前后台文章列表开启「支持全面的 AJAX操作」,会让 WooCommerce 的订单和优惠券页面出现一些问题,最近接了一些 WooCommerce 的项目,仔细研究和处理了一下,顺手做了一些简单的优化,在这些页面,全面的 AJAX操作被关闭,使得功能先不冲突。
兼容文章列表页操作
就像上面说的 WordPress 现在更新的方向就是古腾堡编辑器,因为古腾堡编辑器的块编辑器特性,需要大的界面,甚至全凭编辑,所以尽量不要去在文章编辑界面添加设置框。
所以就把很多操作都移到了 WordPress 后台文章列表页面,WPJAM Basic 有一块子菜单是关于文章列表的:
所以我继续优化后台文章列表页面的操作交互,比如在把鼠标移到缩略图上面,会在右上角显示一个编辑图标,点击会弹窗让你修改标题,摘要和头图。另外鼠标移到作者,分类和标签,也会出现编辑图标,点击直接进入快速编辑进行设置。
总之这个交互,我个人觉得还是做得比较满意的,大家可以体验一下。
修复作者下拉菜单引起的参数弃用提醒
如果开启「支持通过作者进行过滤」,那么就会在后台文章列表页显示文章作者下拉菜单:
升级到 WordPress 5.9 之后,会报下面的提示:Deprecated: 自5.9.0版本起,已不建议给WP_User_Query传入一个参数!who已被废弃,请改用capability。
这是因为 WordPress 5.9 在查询用户的时候,不建议使用 who 参数了,5.9 建议使用新的和权限相关的 capability,capability__in 和 capability__not_in 这三个参数了。
所以原来 'who' => 'authors'
需要改成:'capability' => array( 'edit_posts' )
,为了兼容 5.9 和之前的版本,获取文章作者列表,我写了一个新函数:
function wpjam_get_authors($args=[]){
if(version_compare($GLOBALS['wp_version'], '5.9', '<')){
$args['who'] = 'authors';
}else{
$args['capability'] = ['edit_posts'];
}
return get_users($args);
}
这个函数在 WordPress 5.9 之前版本,还是使用 'who' => 'authors' 参数获取文章作者,5.9 之后改成:'capability' => array( 'edit_posts' ),参数获取,这样既能保证兼容,也能所有版本都可用。
新增登录界面去掉语言切换器功能
WordPress 5.9 在登录界面增加了一个语言切换起的功能,用户可以通过它快速切换登录界面的语言:
如果你不是运行国际化博客的话,这个功能基本无用,我们可以屏蔽它,我在「WPJAM」菜单的「样式定制」子菜单下新增一个选项,让你一键移除:
缩略图设置支持设置多张默认缩略图
之前缩略图设置的默认缩略图只支持设置一张,如果很多文章没有设置缩略图,则会显得有些单调,所以新版则增加可以设置多张缩略图,前台使用的时候随机选取一张。
数据按钮支持多个按钮
WPJAM_List_Table 和 WPJAM_Page_Action 的提交按钮支持多个按钮,
比如我最新的小程序插件的「路径和二维码」的弹窗:
这样,我就把原来的「生成二维码」和「提交到微信搜索」的按钮合二为一,文章列表页面更加简洁,我只需要保留批量操作里面的「提交到微信搜索」即可。
JSON Schema
在底层实现了JSON Schema 解析和验证,这样数据传递和处理就会更加标准和规范。
要了解 JSON Schema 首先要知道什么是 JSON?JSON 是 JavaScript Object Notation 的缩写,它是一种简化的数据交换格式,是目前互联网服务间进行数据交换最常见的一种交换格式,具有简洁、可读性好等特点。
JSON 把数据类型分为 String(字符串),Number(数字),Boolean(布尔)Object(对象),Array(数组),Null(空)。
为了约定或者校验 JSON 的数据格式,就诞生了 JSON Schema,可以简单理解为 JSON Schema 是一个描述和验证 JSON 数据结构的模式或规范,可以用来描述数据的格式和其他要求。
WordPress 内置了两个 JSON Schema 函数:
rest_sanitize_value_from_schema($value, $schema)
基于 JSON Schema 对值进行清理和解析。
rest_validate_value_from_schema($value, $schema)
基于 JSON Schema 验证值是否合法。
WPJAM Basic 就是首先根据字段的设置,生成 JSON Schema,然后使用上面两个函数使用 JSON Schema 对数据进行解析和验证。
WPJAM_Field 优化
- mu_fields 的内部字段的 show_if 可以全局还是内部的,这个主要是优化后台缩略图设置界面的时候加上的,这样就无需写额外的 JS 代码了。此外 mu_fields 类型字段支持 readonly 展示。
- WPJAM_Fields 新增 get_defaults 方法,通过它可以获取表单字段的默认值。这是优化后台文章列表时候,优化获取默认值时候加上的。
- wpjam_fields 函数支持 wrap_tag 参数,这样可以定义外层的标签。
新增函数或者函数增强
- wpjam_add_menu_page 的 page_file 参数支持数组,意思是可以一次加载多个文件,并修复 tab_file 加载不成功的问题。
- wpjam_get_list_table_row_action 支持 fallback 参数,在没有权限的情况下,会调用 fallback 的参数进行展示。
- 新增函数 wpjam_get_extend_summary,这个函数会自动读取扩展或者插件的文件信息头,然后自动生成介绍。
- 新增函数 wpjam_register_builtin_page_load 和 wpjam_register_plugin_page_load,用于后台内置的页面插件生成页面的加载。
- 新增函数 wpjam_generate_verification_code 和 wpjam_verify_code,分别用于用于生成验证码和验证验证码。注意验证码是存储于 Memcached 中,如果系统未安装 Memcached,则无效。
- 增强 wpjam_send_json 函数数据处理能力,如果是 true,则返回 errcode 为 0 的结果,如果是 false,则返回 errcode 为 -1,errmsg 为系统数据错误。
WPJAM Basic 扩展优化
「常用短代码」扩展的名字改成「常用短码」,因为 WordPress 默认翻译是短码。
「文章数量」扩展后台界面优化,如果系统有多个 post_type,原来会有「文章类型」的标签页,现在合并到一起。
优化「文章目录」扩展,首先使用子标题的 ID 来作为锚点,如子标题没有 ID,则自动添加 ID,应该会兼容更多情况,然后支持独立设置,开启之后,可以在文章列表页设置:
「简单 SEO」 扩展支持「确保唯一设置」:
这个什么意思呢?这个选项主要用于应对两种情况:
- 如果当前主题或其他插件也会生成摘要和关键字,可以通过勾选该选项移除。
- 如果当前主题没有 wp_head Hook,也可以通过勾选该选项确保生成摘要和关键字。
其他改进
- 前面我介绍了 WordPress 5.9 lazy loading 的性能优化,WPJAM Basic 也调整了一下代码。
- WPJAM_List_Table 注册的 action 和 column 支持 data_type 过滤。
- Safari 浏览器不是提交按钮不能获取焦点而 document.activeElement 不是当前按钮的处理。