✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Zarejestruj szablon bloku dla edytora bloków WordPress (Gutenberg)

19

W moim poprzednim poradniku badałem siłę wzorów blokowych. Szablony bloków są podobne, ale zamiast polegać na kliencie, który wstawi wzorce bloków do edytora, daje im pełny układ, gdy tylko wstawią nowy post.

Warunki wstępne

  • Instalacja WordPress
  • Edytor kodu

Stwórz swój szablon bloku

W tym przykładzie zamierzam wstawić ten sam wzór blokowy, który stworzyłem w moim poprzednim przewodniku, ale jako szablon blokowy.

W tym przewodniku skopiowaliśmy kod HTML wyjścia edytora. W tym przewodniku zrobimy coś nieco innego i zbudujemy tablicę przestrzeni nazw bloków, właściwości i treści.

W swojej najprostszej formie szablon blokowy wygląda trochę tak:

$block_template = [
  [ 'core/heading', [ 'level'   => 2, 'content' => 'Example Block Template' ] ],
  [ 'core/paragraph', [ 'content' => 'Lorem ipsum dolor sit amet labore cras venenatis.' ] ],
];

Jak widać, jest to tablica, która zawiera bloki w następującym wzorze:

  • Blokuj przestrzeń nazw
  • Atrybuty blokowe

Chcemy jednak użyć zagnieżdżonych bloków, więc przekażemy trzeci parametr do tej tablicy bloków, czyli innerBlocks.

Chcesz tylko umieścić blok?

Zauważ, że możesz pozostawić puste atrybuty, aby po prostu zapewnić bloki bez ustawionej zawartości.

Tablica do utworzenia tego samego bloku, który utworzyliśmy w przewodniku po wzorcach bloków, potrzebujemy bardziej złożonej tablicy, takiej jak:

$block_template = [
  [
    'core/group',
    [],
    [
      [
        'core/heading',
        [
          'level'   => 2,
          'content' => 'Example Block Template',
        ]
      ],
      [
        'core/paragraph',
        [
          'content' => 'Lorem ipsum dolor sit amet labore cras venenatis.',
        ]
      ],
      [
        'core/columns',
        [],
        [
          [
            'core/column',
            [],
            [
              [
                'core/heading',
                [
                  'level'   => 3,
                  'content' => 'Sub Heading 1',
                ]
              ],
              [
                'core/paragraph',
                [
                  'content' => 'Lorem ipsum dolor sit amet id erat aliquet diam ullamcorper tempus massa eleifend vivamus.',
                ]
              ],
            ]
          ],
          [
            'core/column',
            [],
            [
              [
                'core/heading',
                [
                  'level'   => 3,
                  'content' => 'Sub Heading 2',
                ]
              ],
              [
                'core/paragraph',
                [
                  'content' => 'Morbi augue cursus quam pulvinar eget volutpat suspendisse dictumst mattis id.',
                ]
              ],
            ]
          ],
        ],
      ],
    ]
  ]
];

Zarejestruj szablon bloku

Rejestrowanie szablonu bloku dla istniejącego typu postu

Aby zarejestrować szablon bloku dla istniejącego typu postu (takiego jak posttyp postu), możesz użyć poniższego kodu, aby zastąpić obiekt typu postu.

function register_block_template() {

    $post_type_object                = get_post_type_object( 'post' );
    $post_type_object->template      = $block_template;
    $post_type_object->template_lock = 'all';
}
add_action( 'init', 'register_block_template' );

Ten kod po prostu ustawia szablon i (opcjonalnie) [template_lock](https://wholesomecode.ltd/#template-lock)typ.

Pełny kod wyglądałby tak:

function register_block_template() {
    $block_template = [
      [
        'core/group',
        [],
        [
          [
            'core/heading',
            [
              'level'   => 2,
              'content' => 'Example Block Template',
            ]
          ],
          [
            'core/paragraph',
            [
              'content' => 'Lorem ipsum dolor sit amet labore cras venenatis.',
            ]
          ],
          [
            'core/columns',
            [],
            [
              [
                'core/column',
                [],
                [
                  [
                    'core/heading',
                    [
                      'level'   => 3,
                      'content' => 'Sub Heading 1',
                    ]
                  ],
                  [
                    'core/paragraph',
                    [
                      'content' => 'Lorem ipsum dolor sit amet id erat aliquet diam ullamcorper tempus massa eleifend vivamus.',
                    ]
                  ],
                ]
              ],
              [
                'core/column',
                [],
                [
                  [
                    'core/heading',
                    [
                      'level'   => 3,
                      'content' => 'Sub Heading 2',
                    ]
                  ],
                  [
                    'core/paragraph',
                    [
                      'content' => 'Morbi augue cursus quam pulvinar eget volutpat suspendisse dictumst mattis id.',
                    ]
                  ],
                ]
              ],
            ],
          ],
        ]
      ]
    ];

    $post_type_object                = get_post_type_object( 'post' );
    $post_type_object->template      = $block_template;
    $post_type_object->template_lock = 'all';
}
add_action( 'init', 'register_block_template' );

Rejestrowanie szablonu bloku dla nowego typu postu

Jeśli rejestrujesz typ posta, możesz przekazać szablon do templateargumentu register_post_type.

Możesz również przekazać [template_lock](https://wholesomecode.ltd/#template-lock)argument do register_post_type.

Blokada szablonu

Argument template_lockmoże zrobić kilka rzeczy w zależności od argumentu, który jest do niego przekazywany. Są one wymienione w przewodniku rozwoju Gutenberga jako:

  • all— zapobiega wszelkim operacjom. Nie można wstawiać nowych bloków, przenosić istniejących ani usuwać bloków.
  • insert— zapobiega wstawianiu lub usuwaniu bloków, ale umożliwia przenoszenie istniejących bloków.

Blokada szablonu nie działa na blokach zagnieżdżonych

Blokada szablonu działa tylko na blokach najwyższego poziomu. Wykorzystaj to na swoją korzyść, tworząc układ, który ma stałe nagłówki, obrazy, akapity i obszar grupowania, w którym klient może wstawić dowolną treść.

Możesz także utworzyć niestandardowy szablon zagnieżdżonego bloku za pomocą InnerBlocks.

Możesz także ograniczyć bloki, które możesz wstawiać do niektórych typów postów.

Użyj szablonu bloku

Aby użyć szablonu blokowego, po prostu utwórz nowy post (lub niestandardowy typ posta w zależności od tego, jak skonfigurowałeś rzeczy). Szablon zostanie wstawiony i będziesz mieć teraz na swojej stronie stałe obszary treści.

Wstawienie posta pokazuje szablon bloku

Możesz ograniczyć bloki dostępne dla różnych typów postów za pomocą poniższego kodu.

function filter_allowed_block_types( $allowed_block_types, $post) {

  if ($post->post_type !== 'post') {
    return $allowed_block_types;
  }

  $allowed_block_types = [
    'core/column',
    'core/columns',
    'core/group',
    'core/heading',
    'core/paragraph',
  ];

  return $allowed_block_types;
}
add_filter( 'allowed_block_types', 'filter_allowed_block_types', 10, 2 );

Powyższy kod ogranicza bloki dozwolone w posttypie postu do następujących:

Źródło nagrywania: wholesomecode.ltd

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów