如果页面上存在某个古腾堡块,则我正在设计一种具有不同样式的设计。换句话说,如果第一个块是自定义的Gutenberg块,则由于做出了设计选择,post_title会在其他位置呈现。 post_content?

评论

有一个网站whichblocks.com当您键入网页URL时,它将扫描页面并找出页面中使用了哪些gutenberg块。

#1 楼

WordPress 5.0+具有此功能:parse_blocks()。要查看帖子中的第一个块是否为标题块,请执行以下操作:

$post = get_post(); 

if ( has_blocks( $post->post_content ) ) {
    $blocks = parse_blocks( $post->post_content );

    if ( $blocks[0]['blockName'] === 'core/heading' ) {
    }
}


评论


谢谢!我找不到此功能。有趣的是,我的自定义代码基本上可以完成相同的操作,但是代码却少得多!无论如何,标记为已接受,因为它是正确的内置函数。

– Jeffrey von Grumbkow
18年8月2日在11:36

该函数已被弃用(但仅重命名),而应使用has_blocks($ blockName)代替:github.com/WordPress/gutenberg/pull/8631/commits/…。还有has_block()(不带“ s”)。

– Nico Prat
18年11月12日在9:16

@NicoPrat我们已经更新了答案以反映正确的方法

– Jeffrey von Grumbkow
18/12/10在15:24



请记住,当parse_blocks()返回不存在的块作为NULL数组元素时,存在一个已知问题-core.trac.wordpress.org/ticket/45312

–李
19年4月18日在13:34

developer.wordpress.org/reference/functions/parse_blocks :)

–bbeecher
20 Apr 15'0:13

#2 楼

我在撰写本文时使用的解决方案请检查Gutenberg HTML注释的post_content。由于将来发生古腾堡(Gutenberg)更改,因此将来可能无法使用。

#3 楼

从5.0版本开始,已经将Gutenberg集成到核心中,不再使用这些功能。我想,但尚未确认这些功能仍然存在于Gutenberg独立插件中。

评论


@JeffreyvonGrumbkow的事情是,ian-hoyte必须以低代表的身份进行编辑或评论=)

–honk31
19 Mar 4 '19在16:11