Fastest way of creating
Gutenberg blocks
with minimal JavaScript knowledge
Imran Sayed @imranhsayed
22 Feb 2020
LIVE
.
LIVESTREAM
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Need for building custom Blocks?
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Ways of building blocks
ES5
ES
&
JSX
Next
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Challenges in building blocks with ES6
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Challenges in building blocks with ES6
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Challenges in building blocks with ES6
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
ES6
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
ES6
E.g. import { registerBlockType } from '@wordpress/blocks';�
() => {}
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
React
<RichText>, <InspectorControls>, <TextControl>�
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
JSX
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
JSX
<p className={ className }>
{ __( ‘Hello World!’, ‘create-block’ ) }
</p>
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"react-require"
]
}
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
There is so much learn??
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
May give up?
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Is there a simpler way?
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Building blocks with minimal JavaScript
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Dynamic Blocks
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Building Dynamic blocks with minimal JavaScript :��1. Using wordpress/create-block
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
@wordpress/create-block
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Generate blocks with create-block
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
todo-list.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
src/index.js
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
2. Using WP-CLI
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Generate blocks with WP-CLI
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
movie.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
index.js
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Adding a dynamic block
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Using dynamic Block - serverSideRender
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Using dynamic Template
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Movies block - �3 latest movies
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Can we build blocks without using JavaScript?
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
Answer: Yes
Blocks ( 5.8+ Pro )
ACF Blocks is a PHP framework that does not require any JavaScript.
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
What is ACF?
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Building Blocks with ACF
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
WordPress Block API�
Steps Involved
ACF Blocks
acf_register_block_type()
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Difference
WordPress Block API
ACF Blocks
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
ACF Blocks demo
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Building a brands block
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Step 1: Register Block Server Side
�function gt_register_block() {
acf_register_block_type( $settings );
}
add_action( ‘acf/init’, 'gt_register_block' );
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Add Settings
$settings = [
'name' => ‘integration-brands',
'title' => __( ‘Integrations By Brands’ ),
'description' => __( ‘Brand block' ),
'render_template' => 'path/to/brands.php',� 'icon' => 'images-alt',
'category' => 'formatting',
‘enqueue_style’ => 'path/to/style.css'
];
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Step 2: Create Fields
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Step 3: Load block template�- brands.php
$block
print_r( $block )
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
print_r( $block )
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
brands.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
brands.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
brands.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
brands.php
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Demo in Editor
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Demo in Front end
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Live Preview and Edit Mode
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
More blocks example
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Creating blocks with JavaScript Vs ACF
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Block generation and other tools
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
Ways of Building Blocks
ES5
ES
&
JSX
Next
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
WordPress Training Program
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
learn.rtcamp.com
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS
#WCASIA 2020
BLOCKS
L I V E S T R E A M
#WCASIA 2020
BLOCKS