グーテンベルクあなたがWordPressの最新の編集者について知る必要があるすべて
グーテンベルクはWordPressのための新しいエディタです。 現在のTinyMCE搭載のエディタを置き換える. これは、おそらくWordPressをさまざまな方法で変更し、通常のエンドユーザーと開発者の両方、特にWordPressで作業するためにエディタ画面に頼っている開発者の両方に影響を与える野心的なプロジェクトです。これがどのように見えるかです。.
グーテンベルクはまたWordPressで呼ばれる新しいパラダイムを紹介します “ブロック”.
“ブロック” 説明に使用される抽象的な用語です。 マークアップの単位 それらはWebページのコンテンツやレイアウトから構成されています。このアイデアは、WordPressで今日達成していることの概念を組み合わせたものです ショートコード、カスタムHTML、および単一の一貫したAPIへの発見の埋め込み とユーザーエクスペリエンス.
プロジェクトの設定
グーテンベルクがReactの上に構築されているという事実を知って、何人かの開発者は 入門レベルの開発者にとってグーテンベルクを開発するには障壁が高すぎる.
React.jsを設定したばかりの場合、React.jsの設定にはかなりの時間と混乱を招く可能性があります。少なくとも、JSXトランスフォーマー、Babel、Babelプラグインが必要なコード、Webpack、Rollup、ParcelなどのBundlerが必要です。.
幸運なことに, WordPressコミュニティ内の何人かの人々がステップアップしました そして、誰もが従うことができるようにグーテンベルクの開発をできるだけ簡単にしようとしています。今日、我々はグーテンベルクの定型文を生成するツールを持っています。 すぐにコードを書き始めることができます ツールや設定に戸惑うのではなく.
グーテンブロックを作成する
の create-guten-block
Ahmad Awaisによる初期プロジェクトです。それは ゼロ設定ツールキット (#0CJS
React、Webpack、ESNext、Babel、ESLint、Sassなどの最新のスタックプリセットを使ってグーテンベルクブロックを開発することができます。指示に従ってCreate Guten Blockを始めましょう。.
ES5を使用する(ECMAScript 5)
これらすべてのツールを使用して簡単なものを作成する “こんにちは世界” ブロックは多すぎるように見えるかもしれません。スタックをスリムに保ちたい場合は、すでに慣れ親しんだ普通のECMAScript 5を使って実際にグーテンベルクブロックを開発することができます。あなたが持っている場合 WP-CLI 1.5.0がコンピュータにインストールされている, あなたはただ走ることができます…
WP足場ブロック[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--force]
…に あなたのプラグインやテーマにグーテンベルクブロックの定型文を生成する. このアプローチは、特にグーテンベルク時代以前に開発した既存のプラグインとテーマにとってより賢明です。.
グーテンベルクブロックを収容するために新しいプラグインを作成する代わりに、あなたのプラグインやテーマにブロックを統合することをお勧めします。そして、このチュートリアルをみんなにとってわかりやすくするために, WP-CLIでECMAScript 5を使用します.
新しいブロックを登録する
Gutenbergは現在プラグインとして開発されており、チームが準備が整ったと感じたときはいつでもWordPress 5.0にマージされるでしょう。それで、当分の間、あなたはそれをからインストールする必要があるでしょう。 プラグインページ WP管理者
. インストールしてアクティブ化したら、ターミナルまたはWindowsマシンの場合はコマンドプロンプトで次のコマンドを実行します。.
wpスキャフォールドブロックシリーズ--title = "HTML5 Series" --theme
このコマンドは現在アクティブなテーマへのブロックを生成します。私たちのブロックは以下のファイルで構成されます。
. ×¢Â???¢Â???¢Â???シリーズ×¢????¢Â???¢Â???¢Â??? block.js×¢????¢Â???¢Â???¢Â??? editor.css×¢????¢Â???¢Â???¢Â??? style.css×¢Â???¢Â???¢Â??? series.php
ブロックのメインファイルを functions.php
私たちのテーマの:
if(function_exists( 'register_block_type'))get_template_directory()が必要です。 '/blocks/series.php';
ファイルロードを条件付きで囲むことに注意してください。これにより、 グーテンベルクが存在するときにのみ私たちのブロックがロードされる以前のWordPressバージョンとの互換性. これで、グーテンベルクインターフェース内で私たちのブロックが利用可能になります。.
ブロックを挿入したときの外観.
グーテンベルグAPI
グーテンベルクは、新しいブロックを登録するために2セットのAPIを紹介します。私達が見れば series.php
, 新しいBlockを登録する次のコードが見つかります。また フロントエンドとエディタにスタイルシートとJavaScriptをロードします。.
register_block_type( '21 / series'、array( 'editor_script' => 'series-block-editor'、 'editor_style' => 'series-block-editor'、 'style' => 'series-block'、));
上記のように、私たちのブロックは 二十七/シリーズ
, 他のプラグインによってもたらされた他のブロックとの衝突を避けるために、ブロック名は一意で名前空間が必要です。.
さらに, グーテンベルクは、と対話するための一連の新しいJavaScript APIを提供します。 “ブロック” インタフェース エディタで。 APIは非常に豊富にあるので、私たちはあなたがシンプルだが機能しているグーテンベルクブロックを得るためにあなたが知っているべきだと思ういくつかの詳細に焦点を当てます。.
wp.blocks.registerBlockType
最初に、私達は調べます wp.blocks.registerBlockType
. この機能は、 新規登録 “ブロック” グーテンベルグの編集者へ. 2つの引数が必要です。最初の引数は、で登録された名前に続くべきブロック名です。 register_block_type
PHP側で機能します。 2番目の引数は ブロックプロパティを定義するオブジェクト タイトル、カテゴリ、およびBlockインタフェースをレンダリングするための2つの関数のようなもの.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType( '27 /シリーズ'、タイトル:__( 'HTML5シリーズ')、カテゴリ: 'ウィジェット'、キーワード:['html']、編集:関数(小道具)、保存:関数(小道具) ;));
wp.element.createElement
この関数はあなたの中に要素を作成することを可能にします “ブロック” ポストエディタで。の wp.element.createElement
関数は基本的にReactの抽象化です createElement()
したがって、functionは同じ引数のセットを受け入れます。最初の引数は要素の型、例えば段落、 スパン
, または div
以下に示すように:
wp.element.createElement( 'div');
私たちはできる 関数を変数にエイリアスする だから書くのは短いです。例えば:
var el = wp.element.createElement; el( 'div');
もし、あんたが 新しいES6構文の使用を好む, このようにすることもできます。
const createElement:el = wp.element; el( 'div');
私達はまたできます 要素の属性を追加する のような クラス
名前または id
次のように2番目のパラメータで。
var el = wp.element.createElement; el( 'div'、'クラス': 'series-html5'、 'id': 'series-html-post-id-001');
の div
私たちが作ったものはその内容がなければ意味がありません。私たちはできる 3番目のパラメータの引数に内容を追加する:
var el = wp.element.createElement; el( 'p'、'class': 'series-html5'、 'id': 'series-html-post-id-001'、 'この記事は私達の "HTML5 / CSS3チュートリアルシリーズ"の一部です - 専用より良いデザイナーや開発者になるために、ここをクリックして同じシリーズの他の記事を参照してください。
wp.components
の wp.components
名前が示すように、グーテンベルクコンポーネントのコレクションを含みます。これらのコンポーネントは技術的には、ボタン、ポップオーバー、スピナー、ツールチップ、その他多数のReactカスタムコンポーネントです。私たちはできる これらのコンポーネントを私たち自身のブロックに再利用する. 次の例では、ボタンコンポーネントを追加します。.
var Button = wp.components.Button; el(Button、'クラス': 'ダウンロードボタン'、、 'ダウンロード');
属性
属性は、データをブロックに格納するための方法です。このデータは、コンテンツ、色、配置、URLなどになります。 edit()
次のように機能します。
編集:関数(小道具)varコンテンツ= props.attributes.seriesContent; el( 'div'、'class': 'series-html5'、 'id': 'series-html-post-id-001'、content)を返します。
属性を更新するには、 setAttributes()
関数。通常、ボタンがクリックされたとき、入力がいっぱいになったとき、オプションが選択されたときなど、特定のアクションの内容を変更します。次の例では、それを使用して追加します。 後退する 予期しないことが起きた場合のブロックの内容 seriesContent
属性.
編集:function(props)if(typeof props.attributes.seriesContent === 'undefined' ||!props.attributes.seriesContent)props.setAttribute(seriesContent: 'こんにちは、フォールバックコンテンツです。' var content = props.attributes.seriesContent; [el( 'div'、'class': 'series-html5'、 'id': 'series-html-post-id-001'、content)、];を返します。
ブロックを保存する
の 保存する()
この関数は edit()
, ただし、投稿データベースに保存するために、ブロックのコンテンツを定義します。下記のように、ブロックの内容を保存するのはとても簡単です。
save:function(props)if(!props ||!props.attributes.seriesContent)return; var content = props.attributes.seriesContent; [el( 'div'、'class': 'series-html5'、 'id': 'series-html-post-id-001'、content)、];を返します。
次は何ですか?
グーテンベルクはWordPressのエコシステムをより良いものに(あるいはもっと悪いものに)変えるでしょう。それは開発者を可能にします WordPressのプラグインとテーマを開発する新しい方法を採用する. グーテンベルクはほんの始まりです。まもなく “ブロック” パラダイムは、設定APIやウィジェットなど、WordPressの他の分野にも拡張されます。.
JavaScriptを詳しく学んでください。それはグーテンベルクに入ってWordPress業界で未来に関連し続けるための唯一の方法です。あなたがすでにJavaScriptの基本、癖、機能、ツール、商品、そしてバッドに精通しているのなら、グーテンベルクに慣れるのは確実です。.
述べたように、グーテンベルクはあなたのブロックにほとんど何でもするのに十分な豊富なAPIを公開しています。するかどうかを選択できます あなたのブロックを普通のJavaScript、ES6シンタックスを含むJavaScript、React、あるいはVueでコーディングする.
アイデアとインスピレーション
私はあなたが私たちのGithubアカウントのリポジトリで見つけることができる非常に(非常に)簡単なグーテンベルクブロックを作成しました。さらに、私はあなたがより複雑なブロックを構築することにインスピレーションを促すことができるところからのリポジトリの数をまとめました.
- Gutenblocks - ES5 SyntaxでJavaScriptで書かれたMathieu Vietによるブロックのコレクション
- Jetpack Gutenblocks Project - Jetpackにバンドルされているブロックのコレクション
- Vue.jsを含むGutenbergの実装例のリスト
その他の参考資料
- グーテンベルクオフィシャルリポジトリ
- グーテンベルクハンドブック