无法再使用经典编辑器强制发布?

我不会采用 WordPress 的新区块功能,而是继续使用经典编辑器。

我刚注意到 WP Discourse 插件更新了一个我使用的设置“强制发布”:

此设置仅在发布文章时使用区块编辑器时应用。

真遗憾,但只要有决心,就有办法。其他人遇到过这个问题并想出自定义解决方案吗?也许是添加到主题的 *functions.php* 文件中的一些内容?

谢谢。

3 个赞

@oopsyscoops,是的,同时支持这两个编辑器存在一些限制。你仍然可以在经典编辑器中使用“自动发布”设置。这在你的情况下有什么问题吗?

2 个赞

自动发布 如果这是一个单用户博客,那也还可以。

但是,作为一个多作者博客,强制发布非常有帮助。

在我去查看更新日志之前,您是否能凭记忆告诉我 WP Discourse 的哪个版本将此功能移至了块编辑器并从经典编辑器中移除了?

我并不是建议我回滚到那个版本(那将是一个糟糕的主意),但我也许可以挖掘一下代码,并通过我的主题将旧的解决方案重新应用进去。

我希望 WP Discourse 不会最终完全放弃经典编辑器。仍然有超过 600 万个(可验证的,但可能更多)网站在使用经典编辑器,我相信数百万人将继续无限期地使用经典编辑器功能。

我打算这样做,并且我怀疑,当他们意识到即使多年后,有些人仍然只是喜欢经典编辑器并且不会采用新的块功能时,经典功能最终将(可选地)在 WP 中被官方支持(不依赖插件)。

2 个赞

我明白你的想法,但这是否只是作者培训的问题,看看它在实践中是否会引起问题?你比我更了解你的作者,但我不会排除这种可能性。

经典编辑器仍然绝对受支持。

我对此表示怀疑,但我以前也犯过错误(至少我知道有三次 ;))

如果你能解决 @simon 在删除它时试图解决的问题(例如,请参阅 https://github.com/discourse/wp-discourse/blob/main/lib/discourse-publish.php#L107),那么欢迎提交 PR。他也许能解释得更清楚。

3 个赞

这根本不现实。我做编辑已经十多年了,培训和管理过几十位各种技能水平的作者,从完全不懂技术的人到程序员都有。我只遇到过少数几位既是优秀作者,又足够精通技术和有条理,能够(不费力地)遵循我为他们制定的所有指南。

我可以做一个更严格的编辑(我已经很神经质了),但那样我就会失去宝贵的作者资源。多年来,我有很多优秀的作者,他们几乎不知道如何开机。其中许多人在学习如何使用WordPress发布内容时就已经面临学习曲线,他们宁愿直接给我发Word文档。:squinting_face_with_tongue:

所以,我尽我所能去培训,但归根结底,自动化就是保持理智

总之,我很想了解为什么这个功能对于Classic和Block来说都太难维护了,如果能得到简要回顾的话,@simon?就我而言,在一个项目中,我有一个搭档坚持让我允许他们使用Block编辑器(而团队中的其他人都使用Classic编辑器),所以我确实有一些混合使用两者的经验,我也明白这会变得很麻烦。

谢谢

3 个赞

是的,如果“强制发布”选项能够同时支持两个编辑器,那就太好了。我上次查看这个问题已经是几年前的事了。我不确定问题的原因是什么,但我怀疑这可能是一个可以解决的问题。

3 个赞

好的,我们正在查看这个文件:

*/lib/*discourse-publish.php

比较 2.1.2 和 2.1.3,以下是(关于强制发布)的唯一区别:

if ( ( 0 === $force_publish_max_age ) || $post_time >= $min_date ) {

已更改为:

if ( ( ( 0 === $force_publish_max_age ) || $post_time >= $min_date ) && $is_rest_request ) {

并且添加了以下几行:

// 块编辑器和经典编辑器都很难支持“强制发布”设置。$is_rest_request
// 变量用于仅允许在发布文章时尊重“强制发布”设置(使用块编辑器)。
$is_rest_request = defined( 'REST_REQUEST' ) && REST_REQUEST;

如果我猜得没错,也许旧方法在块编辑器中会引发错误?那么,它是否像使用条件语句一样简单?

is_block_editoruse_block_editor_for_post 可能会起作用:

if ( is_block_editor() ) {
	// 使用新方法
} else {
	// 使用旧方法
}
1 个赞

想尝试一下并提交一个 PR 吗?

1 个赞

如果你是在跟我说话,我绝对不会贸然行动,除非 @simon 回忆起当初为什么把它移除(或者追溯他的步骤来再次了解它是什么)。这可能是与 WordPress 核心、Discourse 或 WP Discourse 有关的某个未知噩梦,而不仅仅是这些文件和代码行中的问题。