редактировать с помощью функции php галерею в сообщениях, созданных с помощью Гутенберга - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь изменить вывод html галереи, предоставленной gutemberg через функцию php ... но я не могу.

Как вы перехватываете и изменяете себя?

это оригинал:

<ul="wp-block-gallery columns-2 is-cropped">
  <li class="blocks-gallery-item">....</li>
  <li class="blocks-gallery-item">....</li>
</ul>

, и я хотел бы изменить его в зависимости от количества столбцов, чтобы адаптировать его к моей структуре разработки ...

<div class="grid-x">
   <div class="box-50">...</div>
   <div class="box-50">...</div>
</div>

существует какизменить его через function.php ??

1 Ответ

0 голосов
/ 28 марта 2019

Решение:

Пример переопределения вывода Wp gutenberg html с помощью функции php:

add_filter( 'render_block', 'GutenGallery' , 10, 2 );

  function GutenGallery( $block_content, $block )
  {

    if ( 'core/gallery' !== $block['blockName'] || ! isset( $block['attrs']['ids'] ) )
    {
      return $block_content;
    }

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

    foreach( (array) $block['attrs']['ids'] as $id ) {

      if( $col == "1" || !$col)
      {
        $li .= sprintf( '<div class="box-[50-50-100]"><div class="autocrop radius-medium" style="height:300px;">%s</div></div>', wp_get_attachment_image( $id, 'large' ) );
      }
      elseif ($col == "2" )
      {
        $li .= sprintf( '<div class="box-[50-50-100]"><div class="autocrop radius-medium" style="height:300px;">%s</div></div>', wp_get_attachment_image( $id, 'large' ) );
      }
      elseif ($col == "3" )
      {
        $li .= sprintf( '<div class="box-[33-33-100]"><div class="autocrop radius-medium" style="height:300px;">%s</div></div>', wp_get_attachment_image( $id, 'large' ) );
      }
      elseif ($col >= "4" )
      {
        $li .= sprintf( '<div class="box-[25-25-50]"><div class="autocrop radius-medium" style="height:300px;">%s</div></div>', wp_get_attachment_image( $id, 'large' ) );
      }

    }
    return sprintf( '<div class="grid-x gap-20">%s</div>', $li );

  }

(поле - это сетка, используемая в моем фрейме кимера )

спасибо всем;)

...