Search code examples
phpwordpresswordpress-gutenberg

Get content layouts of grid into gutenber blog


Based on the previous development I built a small code to modify the gutenber grids. However I don't know how to retrieve the contents of the columns and reapply it to the context.

Into funciton.php

  // Change WordPress gutenberg grid
  add_filter( 'render_block', 'GutenGrid' , 10, 2 );
  function GutenGrid( $block_content, $block )
  {

    if ( $block['blockName'] !== 'core/columns' )
    {
      return $block_content;
    }

    $col = $block['attrs']['columns'];

    $boxes = '';

    // foreach( (array) $block['attrs']['ids'] as $id ) {
    for ($c = 0; $c <= $col-1; $c++) {


     if ($col == "3" )
      {
        $boxes .= '<div class="box-[33-33-100]"><div><p>type3col</p>'. content ?? .'</div></div>' ;
      }
      elseif ($col == "4" )
      {
        $boxes .= '<div class="box-[25-25-50]"><div><p>type4col</p>'. content ?? .'</div></div>' ;
      }
      elseif ($col == "5" )
      {
        $boxes .= '<div class="box-[20-20-50]"><div><p>type5col</p>'. content ?? .'</div></div>' ;
      }
      elseif ($col >= "6" )
      {
        $boxes .= '<div class="box-[15-15-50]"><div><p>type6col</p>'. content ?? .'</div></div>' ;
      }
      else {
        $boxes .= '<div class="box-[50-50-100]"><div><p>type1&2col</p>'. content ?? .'</div></div>' ;
      }

    }

    $output = '<p>GRID REWRITED:</p><div class="grid-x gap-30">'.$boxes.'</div>';

    return sprintf( $output, $boxes );

  }

Can help me?


Solution

  • SOLVED:

          // Change WordPress gutenberg grid
      add_filter( 'render_block', 'GutenGrid' , 10, 2 );
      function GutenGrid( $block_content, $block )
      {
    
        if ( $block['blockName'] !== 'core/columns' )
        {
          return $block_content;
        }
    
        $col = $block['attrs']['columns'];
        $content = $block['innerBlocks'][0]['innerBlocks'][0]['innerContent'];
    
        $boxes = '';
    
        // foreach( (array) $block['attrs']['ids'] as $id ) {
        for ($c = 0; $c <= $col-1; $c++) {
    
    
         if ($col == "3" )
          {
            $boxes .= '<div class="box-[33-33-100]"><div>'. $block['innerBlocks'][$c]['innerBlocks'][0]['innerContent'][0] .'</div></div>' ;
          }
          elseif ($col == "4" )
          {
            $boxes .= '<div class="box-[25-25-50]"><div>'. $block['innerBlocks'][$c]['innerBlocks'][0]['innerContent'][0] .'</div></div>' ;
          }
          elseif ($col == "5" )
          {
            $boxes .= '<div class="box-[20-20-50]"><div>'. $block['innerBlocks'][$c]['innerBlocks'][0]['innerContent'][0] .'</div></div>' ;
          }
          elseif ($col >= "6" )
          {
            $boxes .= '<div class="box-[15-15-50]"><div>'. $block['innerBlocks'][$c]['innerBlocks'][0]['innerContent'][0] .'</div></div>' ;
          }
          else {
            $boxes .= '<div class="box-[50-50-100]"><div>'. $block['innerBlocks'][$c]['innerBlocks'][0]['innerContent'][0] .'</div></div>' ;
          }
    
        }
    
        $output = '<p>GRID REWRITED:</p><div class="grid-x gap-30">'.$boxes.'</div>';
    
        return sprintf( $output, $boxes );
    
      }