WordPress Parse Block

//Show the all the Gutenberg jason based content <?php $blocks = parse_blocks($post->post_content); foreach ($blocks as $block) { print "<pre>".print_r($block,1)."</pre>"; } ?> //Show the specific value of an ACF Gutenber block field <?php $blocks = parse_blocks($post->post_content); foreach ($blocks as $block) { if ($block['blockName'] == 'acf/primary-slide-block') { //print_r($block['attrs']['data']); $slide_effect = $block['attrs']['data']['slide_effects']; echo '<li>'.$slide_effect.'</li>'; } } ?> //Second exmaple that creates slugs via sanitation. <?php $blocks = parse_blocks($post->post_content); foreach ($blocks as $block) { if ($block['blockName'] == 'acf/slide') { //print_r($block['attrs']['data']); $slide_name = $block['attrs']['data']['slide_name']; $slide_slug = '' . sanitize_title( $slide_name ) . ''; echo '<li>'.'<a href="#'.$slide_slug.'">'.$slide_name.'</a>'.'</li>'; } } ?> // Parse with Image URL or Id either way it works the same. <?php $blocks = parse_blocks($post->post_content); foreach ($blocks as $block) { if ($block['blockName'] == 'acf/big-book') { $block_name = $block['attrs']['data']['block_id']; $block_slug = '' . sanitize_title( $block_name ) . ''; $main_image = $block['attrs']['data']['main_image']; $image_attributes = wp_get_attachment_image_src( $main_image, 'full' ); $title = $block['attrs']['data']['title']; $sub_title = $block['attrs']['data']['sub_title']; ?> <div class="slide" data-content="<?php echo $block_slug; ?>"> <div style="background-image: url(<?php echo $image_attributes[0]; ?>)" class="img-wrap"><img src="image_url_goes_here.png" alt="Camera"/></div> <h2><?php echo $title; ?><span><?php echo $sub_title ?><?php echo $main_image ?></span></h2> <button class="content-switch">Read more</button> </div> <?php } } ?> <?php $blocks = parse_blocks($post->post_content); foreach ($blocks as $block) { if ($block['blockName'] == 'acf/presentation-slide') { $slide_name = $block['attrs']['data']['slide_name']; $slide_slug = '' . sanitize_title( $slide_name ) . ''; //$slide_name = ['innerBlocks']['data'] ?> <li> <a href="<?php echo $slide_slug; ?>"><?php echo $slide_name; ?></a> <?php foreach($block['innerBlocks'] as $sub_slide) { ?> <?php if(isset($sub_slide['attrs']['data']['slide_name'])) { $sub_slide_title = $sub_slide['attrs']['data']['slide_name']; $sub_slide_slug = '' . sanitize_title( $sub_slide_title ) . ''; ?> <li> <a href="#<?php echo $sub_slide_slug; ?>"><?php echo $sub_slide_title; ?></a> </li> <?php } ?> <?php }//end foreach ?> <?php } } ?> /* Here I am parsing a block but I want to hide the first element.*/ <?php if( $use_sub_slides) :?> <li> <a href="#<?php echo $slide_slug; ?>"><?php echo $slide_name; ?></a> <ol class="sub-nav"> <?php $isFirst = true; foreach($block['innerBlocks'] as $sub_slide) { if ($isFirst) { $isFirst = false; continue; } ?> <?php if(isset($sub_slide['attrs']['data']['slide_name'])) { $sub_slide_title = $sub_slide['attrs']['data']['slide_name']; ?> <li><a href="#<?php echo $slide_slug; ?>"><?php echo $sub_slide_title; ?></a></li> <?php } ?> <?php }//end foreach ?> <?php endif ?> </ol>

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.