Depois de falar sobre JavaScript e ECMAScript, Node.js, NVM e NPM, finalmente voltamos a mexer em código, atualizando o nosso arquivo javascript e fazendo a transpilação com o Babel.
Códigos
Aqui estão os códigos dos arquivos que eu usei no vídeo.
meu-primeiro -bloco.php
<?php /** * Plugin Name: Meu Primeiro Bloco */ defined( 'ABSPATH' ) || exit; function init_meu_primeiro_bloco() { // JavaScript para o editor. wp_register_script( 'meu-primeiro-bloco', plugins_url( 'meu-primeiro-bloco-es5.js', __FILE__ ), array( 'wp-blocks', 'wp-element', 'wp-editor' ), filemtime( plugin_dir_path( __FILE__ ) . 'meu-primeiro-bloco-es5.js' ) ); // CSS para o frontend e editor. wp_register_style( 'meu-primeiro-bloco', plugins_url( 'frontend.css', __FILE__ ), array(), filemtime( plugin_dir_path( __FILE__ ) . 'frontend.css' ) ); // CSS para o editor. wp_register_style( 'meu-primeiro-bloco-editor', plugins_url( 'editor.css', __FILE__ ), array( 'wp-edit-blocks' ), filemtime( plugin_dir_path( __FILE__ ) . 'editor.css' ) ); // Registra o bloco. register_block_type( 'blocos-de-exemplo/meu-primeiro-bloco', array( 'style' => 'meu-primeiro-bloco', 'editor_style' => 'meu-primeiro-bloco-editor', 'editor_script' => 'meu-primeiro-bloco', ) ); } add_action( 'init', 'init_meu_primeiro_bloco' );
meu-primeiro-bloco-esnext.js
const { createElement } = wp.element; const { RichText } = wp.editor; const { registerBlockType } = wp.blocks; registerBlockType( 'blocos-de-exemplo/meu-primeiro-bloco', { title: 'Bloco de Exemplo', icon: 'heart', category: 'common', attributes: { conteudo: { type: 'string', source: 'html', selector: 'p', }, }, edit( props ) { const { className, setAttributes, attributes: { conteudo, } } = props; return ( <RichText tagName="p" className={ className } onChange={ novoConteudo => setAttributes( { conteudo: novoConteudo } ) } value={ conteudo } /> ); }, save( props ) { return ( <RichText.Content tagName="p" value={ props.attributes.conteudo } /> ); }, } ); console.log( 'teste' );
package.json
{ "name": "meu-primeiro-bloco", "version": "1.0.0", "description": "", "main": "meu-primeiro-bloco.js", "author": "", "license": "ISC", "devDependencies": { "@babel/cli": "^7.2.0", "@babel/core": "^7.2.2", "@wordpress/babel-preset-default": "^3.0.1", "babel-preset-minify": "^0.5.0" }, "scripts": { "dev": "babel meu-primeiro-bloco-esnext.js --out-file meu-primeiro-bloco-es5.js --presets @wordpress/default --watch --source-maps inline", "build": "babel meu-primeiro-bloco-esnext.js --out-file meu-primeiro-bloco-es5.js --presets @wordpress/default,minify" } }
Vou deixar aqui um zip com tudo junto e atualizado também. Eu já pedi pra você deixar um like no vídeo e se inscrever no canal?