This is not
the block
you are looking for

Arūnas Liuiza

WordPress Core Contributor, WordPress Kaunas Meetup co-organizer, WordCamp (Lithuania, Riga, Stockholm, Jyväskylä, Oslo, Norrköping) speaker and one of the editors of the Lithuanian WordPress translation team and co-host of Kodo Poetai podcast.


Free & premium WordPress plugin developer


Software Engineer at

For Developers - a service that syncs WordPress plugins from GitHub to automatically. - a service to spin up live temporary demo sites for WordPress plugins and themes.

Learn Javascript,

that's HARD...

How to survive in Gutenberg world
as a PHP developer

Use ACF, Luke

No, really.

/whois GutenFactory

  • An early attempt on PHP-based Gutenberg management
  • Built by yours truly
  • Discontinued



add_filter( 'gutenfactory_blocks', 'my_awesome_block' );
function my_awesome_block( $blocks ) {
  $blocks['arunas/my_awesome_block'] = [
    'name'          => 'My Awesome Block',
    'category'      => 'common',
    'style'         => plugins_url( 'my-awesome-block.css', __FILE__ ),
    'editor_style'  => plugins_url( 'my-awesome-block-editor.css', __FILE__ ),
    'callback'      => 'my_awesome_block_render',
    'fields'        => [
     // define the fields here.

/whois ACF

  • Advanced Custom Fields
  • PRO version, 5.8 or higher



add_action('acf/init', 'my_register_blocks');
function my_register_blocks() {
    // check function exists.
    if( function_exists('acf_register_block_type') ) {
        // Register a testimonial block.
            'name'              => 'testimonial',
            'title'             => __('Testimonial'),
            'description'       => __('A custom testimonial block.'),
            'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
            'category'          => 'formatting',

/whois ACF Builder

  • A PHP Library to easily build ACF fields via code
  • A more straightforward alternative to ACF JSON files



$banner = new StoutLogic\AcfBuilder\FieldsBuilder('banner');
    ->setLocation('block', '==', 'acf/testimonial')
        ->or('block', '==', 'acf/anotherone');

add_action('acf/init', function() use ($banner) {

/whois Lazy Blocks

  • a Gutenberg blocks visual constructor
  • The ACF of Gutenberg age
  • UI based, but has an option to export a PHP snippet



if ( function_exists( 'lazyblocks' ) ) :
    lazyblocks()->add_block( array(
        'title' => 'Custom block',
        'slug' => 'lazyblock/custom-block',
        'supports' => array(
            'html' => false,
            'multiple' => true,
        'controls' => array(
        	// define fields
        'code' => array(
        	// editor/frontend templates or callbacks, assets
    ) );


This is not the block you're looking for

By Arūnas Liuiza

This is not the block you're looking for

WordPress Meetup Kaunas #41

  • 768