我知道这是一篇比较老的帖子,但我也在尝试做类似的事情。我创建了一个帖子类型,并没有使用自定义的元框来添加/保存帖子元,而是使用了块。考虑到这样一个块的用途,它实际上应该只显示相关的post类型。
我发现了以下作品。您可以使用unregisterBlockType()函数为任何非您自己的post类型注销块。
有两个步骤。
当JS文件不在您的帖子类型中时,将其排队
function my_function() {
if ( get_post_type() != \'my-post-type\' ) {
wp_enqueue_script(
\'my-script\',
\'path/to/js/my-script.js\',
array( \'original-block-js\' ),
\'1.0.0\',
true
);
}
}
add_action( \'admin_enqueue_scripts\', \'my_function\' );
请注意“原始块js”是一个依赖项。这是指首先注册块的JS文件。我们正在确保在注册块的代码之后加载注销块的代码。
将以下内容添加到JS文件中
const { unregisterBlockType } = wp.blocks;
wp.domReady( function() {
unregisterBlockType( \'my-name-space/block-name\' );
} );
用您的块名称替换我的命名空间/块名称。
UPDATE
最初的海报想要隐藏任何非等级帖子类型上的块。这是一个稍微不同的用例。但是,只需使用is\\u post\\u type\\u hierarchy()调整条件即可实现。