是否禁用内容编辑器中的代码视图?

时间:2019-10-04 作者:Vanderbeam

是否有方法仅禁用内容编辑器中的代码编辑器视图?

我有一群客户,他们自以为是开发人员,不断地弄乱自己的页面,因为他们真的不知道自己在做什么。他们管理自己的内容,所以我不能完全关闭他们的编辑功能,但这就是我能找到的所有功能(而且每次你在同一搜索中使用“WordPress”和“disable”作为关键字时,Google仍然充斥着关于禁用古腾堡的文章)。

我只是不想让他们选择使用任何东西,除了视觉编辑器。

谢谢

2 个回复
SO网友:WebElaine

您可以在JavaScript中完成,但缺点是必须逐块完成。

您需要安装lodash的网页包:

function removeHtmlEditing( settings, name ) {
    return lodash.assign( {}, settings, {
        supports: lodash.assign( {}, settings.supports, {
            html: false
        } ),
    } );
}

wp.hooks.addFilter(
    \'blocks.registerBlockType\',
    \'core/paragraph\',
    removeHtmlEditing
);
关于wp.hooks.addFilter(). 我试着传入一个块数组、一个空字符串和一个星号,但这不起作用——它似乎需要一个包含名称空间的块名。因此,您必须为站点上的每个块添加一个过滤器,尽管至少removeHtmlEditing() 这个功能对他们都有用。

似乎也没有一种方法可以直接显示:没有CSS的“编辑为HTML”按钮,因为没有特定的CSS类、aria标签或数据属性来确定您的目标按钮。

这会将html“支持”设置更改为false,从而阻止“编辑为html”按钮出现。然而,如果一个块被破坏,它们仍然可以输入HTML。如果自定义HTML块是他们添加错误代码的另一个地方,您可能还希望完全禁用该块。再一次,当您将JS排队时,您需要webpack和“wp blocks”、“wp dom ready”和“wp edit post”作为依赖项:

wp.domReady( function() {
    wp.blocks.unregisterBlockType( \'core/html\' );
} );

SO网友:Trisha

那么另一种方法呢,可能是只给您的客户提供前端编辑权限,可能使用前端编辑器(免费,请参阅链接)或Editus(不免费,但更强大,并且有开发人员/无限站点选项)等插件。然后,您可以向函数中添加一些代码,将所有非管理员重定向到前端编辑器(或者,假设您的一些客户机具有管理员级别的访问权限,则将您以外的任何用户重定向到前端编辑器)。我从后端为某个类的所有用户执行这种类型的重定向,所以如果您需要关于如何执行的代码片段,请询问。

前端编辑器:

https://wordpress.org/plugins/wp-front-end-editor/

Editus:

https://edituswp.com

通过将它们重定向到前端编辑器,可以避免它们弄乱脚本或任何必要的HTML或添加脚本。如果他们想添加脚本,请将它们转换为短代码,并让他们使用它们。

祝你好运,我知道像你这样的客户会多么沮丧!

相关推荐

WP_EDITOR不呈现快捷代码

我已经创建了一个选项页面,并在其中添加了wp编辑器输入。在渲染其输出时,它不会渲染添加到其中的短代码的输出。它只是将短代码呈现为文本。谁能告诉我我做错了什么?下面是我用来获取输出的代码:echo stripslashes( html_entity_decode(get_option(\'home_header_description\') 我已经试过把它包起来了do_shortcode(). 但我的短代码是:[show_more more=Read_more less=Read_less]&#x