将帖子标题设置为只读,并禁用Gutenberg中的固定链接插件编辑器

时间:2019-02-21 作者:MikeSchinkel

使用Gutenberg时,我希望禁用除管理员以外的所有用户编辑帖子标题,即使我想允许他们编辑帖子,and 我想禁用文章标题上方弹出的permalink编辑器。

我想为一个自定义帖子类型这样做,我们将禁用添加或删除帖子的功能,并在启动网站时预加载该帖子类型的所有帖子。

(该用例适用于公寓单元;一旦公寓大楼建成,几乎不需要添加或删除公寓单元,因此我只希望管理员能够添加或删除公寓单元,并且只有管理员能够编辑公寓单元标题或其URL标记。)

我已经能够以一种非古腾堡/黑客式的常规JavaScripty方式找到如何禁用标题编辑的方法,但仍然无法摆脱permalink。就像僵尸一样,它不断地回来(理想情况下,我会使用Gutenbergy方法来实现这一点,而不是hacky JS方法。)

请参阅下面的代码,它确实禁用了标题编辑,但没有禁用永久链接编辑。我更愿意摆脱这种情况,改用Gutenbergy代码。我只在这里包含它,所以我不会得到建议这种方法的答案。

jQuery(function($){
    var title;
    function makeTitleReadOnly() {
        var textarea = title.find("textarea");
        if (textarea.length > 0) {
            textarea.attr("readonly",true);
            return
        }
        setTimeout(makeTitleReadOnly,100);
    }
    function hidePermalink() {
        var permalink = title.find(".editor-post-permalink");
        if (permalink.length > 0) {
            permalink.hide();
            return
        }
        setTimeout(hidePermalink,123);
    }
    function waitForPostTitle() {
        title = $(".editor-post-title");
        if (title.length > 0 ) {
            makeTitleReadOnly();
            hidePermalink();
            return;
        }
        setTimeout(waitForPostTitle,100);
    }
    waitForPostTitle()
});
理想情况下,我不必为此创建单独的插件(我想将所有代码合并到现有插件中),因此理想情况下,我不想添加npm/webpack 构建过程表示否JSX, 理想情况下create-guten-block 将不作为此问题的答案的一部分。

2 个回复
SO网友:Jon Masterson

我在特定的页面上内联使用了这个(使用get\\u current\\u screen())。我希望这能使我在某些条件下隐藏/显示permalink面板。但是,removeEditorPanel()全局删除permalink面板。这并不完全可怕,因为css仍然可以有条件地工作,并且permalink仍然可以通过编辑器(通过单击标题)在其他任何地方进行编辑。希望古腾堡文档/选项很快变得更好。如果有人有任何建议,我洗耳恭听。。。

add_action( \'admin_footer\', function() {
$screen = get_current_screen();
if ( $screen->id == \'WUTEVA\' ) { ?>
<style>
  .editor-post-permalink{display: none !important;}
</style>
<script type="text/javascript">
  const { removeEditorPanel } = wp.data.dispatch(\'core/edit-post\');
  removeEditorPanel( \'post-link\' );
</script>
<?php }
} );

SO网友:Ray

您还可以使用Pods、ACF和Toolset等插件阻止用户访问仪表板,并允许编辑前端的帖子类型自定义字段,不包括帖子标题和永久链接。您不会在编辑中使用Gutenberg,但如果您只需要编辑自定义字段,它将证明您的应用程序是可靠的。仅允许管理员访问仪表板。

相关推荐

使用博客文章数组查询-POSTS_PER_PAGE中的变量作为变量

我试图使用一个变量,我的内容人可以在编辑页面以显示不同数量的博客帖子时更改该变量。在这里,我声明了变量:<?php while( have_rows(\'social_grid_settings\') ): the_row(); $number_of_blog_posts = get_sub_field(\'number_of_blog_posts\'); ?> 已对此进行检查,且变量正确。但是,当放置在查询中时,它似乎不会注册它并显示所有帖子:<