可以在块编辑器样式表中使用POST-TYPE作为css选择器的一部分吗?

时间:2020-02-06 作者:Johannes

我正在为块编辑器编写一个编辑器样式表,以更好地反映编辑器中我的主题的布局,并且我需要能够在其中处理不同的帖子类型。

在前端,有body_class() 函数,其中插入一个类,该类用于标识post类型,并可在组合选择器中使用,以仅在特定post类型中寻址某些元素。

post type类位于body 显示编辑器的页面标记,但样式表中的编辑器CSS显然是以一种“隔离”的方式应用的–组合选择器,包括body 标记在编辑器中不起作用。

因此,我正在寻找类似的东西,它将在块编辑器中工作,以便我可以在组合选择器中使用它,该选择器仅适用于特定帖子类型中的某些元素。

添加内容:

我尝试通过以下方式检查帖子类型:

wp.domReady(function() {
        var postType = jQuery(\'form.metabox-base-form input#post_type\').attr(\'value\');
        if(postType == \'post\'){
            alert("It\'s a post!");//in real life some other action...
        }
});
但是,尽管至少触发我在其中输入的警报是合乎逻辑的,但当我加载帖子的编辑页面时,什么也不会发生,其中包含其“post”值的输入元素明显存在。(?)

1 个回复
最合适的回答,由SO网友:Johannes 整理而成

与此同时,我还在Stackoverflow上发布了这个问题。我在对这个问题的评论中得到了一个暗示,这使我找到了解决办法。我没有找到纯CSS解决方案,但使用以下jQuery脚本动态添加相应的类:

$(document).ready(function() {
    if($(\'body\').hasClass(\'post-type-page\')) {
        $(\'#editor\').addClass(\'post-type-page\');
    } else if($(\'body\').hasClass(\'post-type-post\')) {
        $(\'#editor\').addClass(\'post-type-post\');
    }
});
关键是使用admin_enqueue_scripts, 与前端脚本分开。有关详细信息,请参阅https://stackoverflow.com/a/60155398/5641669

相关推荐

子主题样式.css版本控制

这件事让我头痛不已。我有一个儿童主题,并对style.css 文件这些更改没有显示在页面的重新加载中,因为该文件的样式表声明中没有提及版本。我发现了style.css 作为主题的基础加载,并且style.css 应该会出现,但没有。我尝试了在网上找到的注销、出列和重新排队选项,但仍然没有成功。我已经通过排队等待另一个css文件来解决这个问题,我已经根据文件的修改日期为其添加了版本控制,但我很好奇其他人是否已经看到这个问题并有了适当的解决方案。