如何获取嵌套的古腾堡块进行解析

问题描述

我正在寻找从我的帖子内容获取特定 Gutenbergblock 以在存档模板中使用的方法。在我的单篇文章中的某处有一个图标列表(嵌套在列中,列嵌套在一行中),我想将其用作存档页面条目中的页面摘要。 我编写了这段代码搜索名为“kadence/iconlist”的块并进行渲染。

<?PHP $post_id = get_the_ID();
$post = get_post($post_id);
$blocks = parse_blocks($post->post_content);
foreach ($blocks as $block) { 
    if ($block['blockName'] == 'kadence/iconlist') {
        echo render_block($block);
    }
} ?>

这不会渲染任何东西,因为 'kadence/iconlist' 是嵌套的。 $block 的 var_dump 显示了这个结构:

Array
(
    [blockName] => kadence/rowlayout
    [attrs] => Array
        (
            [uniqueID] => _94b9e4-63
            [columnGutter] => wider
            [colLayout] => equal
            [maxWidth] => 1220
            [topPadding] => 55
            [bottomPadding] => 55
            [overlayFirstOpacity] => 1
            [overlaySecondOpacity] => 1
            [overlayOpacity] => 90
            [align] => full
            [firstColumnWidth] => 50
            [secondColumnWidth] => 50
        )

    [innerBlocks] => Array
        (
            [0] => Array
                (
                    [blockName] => kadence/column
                    [attrs] => Array
                        (
                            [topPadding] => 25
                            [bottomPadding] => 25
                            [leftPadding] => 25
                            [rightPadding] => 25
                            [uniqueID] => _91ffee-25
                        )

                    [innerBlocks] => Array
                        (
                            [0] => Array
                                (
                                    [blockName] => kadence/advancedgallery
                                    [attrs] => Array
                                        (
                                            [uniqueID] => _ccc1ba-38
                                            [columns] => Array
                                                (
                                                    [0] => 2
                                                    [1] => 2
                                                    [2] => 2
                                                    [3] => 2
                                                    [4] => 1
                                                    [5] => 1
                                                )

                                            [thumbSize] => full
                                            [ids] => Array
                                                (
                                                    [0] => 355
                                                    [1] => 354
                                                    [2] => 357
                                                    [3] => 353
                                                    [4] => 351
                                                    [5] => 352
                                                    [6] => 349
                                                    [7] => 348
                                                    [8] => 350
                                                )

                                            [type] => thumbslider
                                            [imageRatio] => square
                                            [linkTo] => media
                                            [gutter] => Array
                                                (
                                                    [0] => 40
                                                    [1] => 
                                                    [2] => 
                                                )

                                            [imageRadius] => Array
                                                (
                                                    [0] => 0
                                                    [1] => 0
                                                    [2] => 0
                                                    [3] => 0
                                                )

                                            [autoplay] => 1
                                            [autoSpeed] => 4000
                                            [lightBox] => magnific
                                            [margin] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [desk] => Array
                                                                (
                                                                    [0] => 0
                                                                    [1] => 0
                                                                    [2] => 0
                                                                    [3] => 0
                                                                )

                                                            [tablet] => Array
                                                                (
                                                                    [0] => 
                                                                    [1] => 
                                                                    [2] => 
                                                                    [3] => 
                                                                )

                                                            [mobile] => Array
                                                                (
                                                                    [0] => 
                                                                    [1] => 
                                                                    [2] => 
                                                                    [3] => 
                                                                )

                                                        )

                                                )

                                            [thumbnailRatio] => square
                                            [thumbnailColumns] => Array
                                                (
                                                    [0] => 4
                                                    [1] => 4
                                                    [2] => 4
                                                    [3] => 4
                                                    [4] => 4
                                                    [5] => 4
                                                )

                                        )

                                    [innerBlocks] => Array
                                        (
                                        )

                                    [innerHTML] => 
PrevIoUs









Next
PrevIoUs






















Next


                                    [innerContent] => Array
                                        (
                                            [0] => 
PrevIoUs









Next











                                        )

                                )

                        )

                    [innerHTML] => 


                    [innerContent] => Array
                        (
                            [0] => 

                            [1] => 
                            [2] => 


                        )

                )

            [1] => Array
                (
                    [blockName] => kadence/column
                    [attrs] => Array
                        (
                            [id] => 2
                            [uniqueID] => _b56b72-c0
                        )

                    [innerBlocks] => Array
                        (
                            [0] => Array
                                (
                                    [blockName] => kadence/advancedheading
                                    [attrs] => Array
                                        (
                                            [level] => 1
                                            [uniqueID] => _1f94db-5b
                                        )

                                    [innerBlocks] => Array
                                        (
                                        )

                                    [innerHTML] => 
RVS-200HD+


                                    [innerContent] => Array
                                        (
                                            [0] => 
RVS-200HD+


                                        )

                                )

                            [1] => Array
                                (
                                    [blockName] => kadence/iconlist
                                    [attrs] => Array
                                        (
                                            [items] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [icon] => fe_check
                                                            [link] => 
                                                            [target] => _self
                                                            [size] => 20
                                                            [text] => Voordeel nummer 1 iets met emmers
                                                            [width] => 2
                                                            [color] => 
                                                            [background] => 
                                                            [border] => 
                                                            [borderRadius] => 0
                                                            [borderWidth] => 1
                                                            [padding] => 5
                                                            [style] => default
                                                        )

                                                    [1] => Array
                                                        (
                                                            [icon] => fe_check
                                                            [link] => 
                                                            [target] => _self
                                                            [size] => 20
                                                            [text] => Puntje 2
                                                            [width] => 2
                                                            [color] => 
                                                            [background] => 
                                                            [border] => 
                                                            [borderRadius] => 0
                                                            [borderWidth] => 1
                                                            [padding] => 5
                                                            [style] => default
                                                        )

                                                    [2] => Array
                                                        (
                                                            [icon] => fe_check
                                                            [link] => 
                                                            [target] => _self
                                                            [size] => 20
                                                            [text] => Puntje 3,deze zijn per bericht gewoon aan te passen 
                                                            [width] => 2
                                                            [color] => 
                                                            [background] => 
                                                            [border] => 
                                                            [borderRadius] => 0
                                                            [borderWidth] => 1
                                                            [padding] => 5
                                                            [style] => default
                                                        )

                                                    [3] => Array
                                                        (
                                                            [icon] => fe_check
                                                            [link] => 
                                                            [target] => _self
                                                            [size] => 20
                                                            [width] => 2
                                                            [color] => 
                                                            [background] => 
                                                            [border] => 
                                                            [borderRadius] => 0
                                                            [borderWidth] => 1
                                                            [padding] => 5
                                                            [style] => default
                                                            [text] => En toe te voegen
                                                        )

                                                )

                                            [listCount] => 4
                                            [uniqueID] => _342687-70
                                        )

                                    [innerBlocks] => Array
                                        (
                                        )

                                    [innerHTML] => 
Voordeel nummer 1 iets met emmers
Puntje 2
Puntje 3,deze zijn per bericht gewoon aan te passen 
En toe te voegen


                                    [innerContent] => Array
                                        (
                                            [0] => 
Voordeel nummer 1 iets met emmers
Puntje 2
Puntje 3,deze zijn per bericht gewoon aan te passen 
En toe te voegen


                                        )

                                )

                            [2] => Array
                                (
                                    [blockName] => core/block
                                    [attrs] => Array
                                        (
                                            [ref] => 918
                                        )

                                    [innerBlocks] => Array
                                        (
                                        )

                                    [innerHTML] => 
                                    [innerContent] => Array
                                        (
                                        )

                                )

                        )

                    [innerHTML] => 






                    [innerContent] => Array
                        (
                            [0] => 

                            [1] => 
                            [2] => 


                            [3] => 
                            [4] => 


                            [5] => 
                            [6] => 


                        )

                )

        )

    [innerHTML] => 


    [innerContent] => Array
        (
            [0] => 

            [1] => 
            [2] => 


            [3] => 
            [4] => 


        )

)
Array
(
    [blockName] => 
    [attrs] => Array
        (
        )

    [innerBlocks] => Array
        (
        )

    [innerHTML] => 


    [innerContent] => Array
        (
            [0] => 


        )

)

我必须如何更改 if($block['blockName'] == 'kadence/iconlist' 才能真正进入 kadence/iconlist 块?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)