見出し画像

カスタムブロックの作成

タイトル: **魔法のブロック**

昔々、遠い国のWordPressという村がありました。この村では、人々がブログを書いたり、ウェブサイトを作成したりするのにWordPressという魔法の力を使っていました。

ある日、村の若き冒険者であるジョンは、新しいウェブサイトを作成するためにブロックエディターの旅に出ることにしました。彼は村の賢者から、ブロックエディターを使って様々なブロックを組み合わせることで素晴らしいウェブサイトを作る方法を学びました。

ジョンは最初はテキストや画像のブロックを使ってウェブサイトを作成しましたが、やがて彼は自分のウェブサイトに独自のコンテンツや機能を追加したいと思いました。そこで彼は、魔法の力を持つカスタムブロックの存在を知りました。

カスタムブロックは、ジョンの想像力を広げる新しい冒険の扉でした。彼はJavaScriptとReactという呪文を使い、自分のウェブサイトに商品のカタログや予約フォーム、価格表などを追加することができるようになりました。

ジョンのウェブサイトは、彼の創造力と魔法の力で彩られ、多くの人々に感動を与えました。そして、そのウェブサイトは村中に伝説となり、未来の冒険者たちに夢と希望を与えることとなりました。

こうして、魔法のブロックを使ったジョンの冒険は終わりを迎えましたが、その物語は永遠に語り継がれることでしょう。

ChatGPT 例え話




カスタムブロックとは

カスタムブロックは、WordPressのブロックエディターで使用される、ユーザーが独自のコンテンツや機能を追加できるブロックのことです。WordPressのブロックエディターは、コンテンツをブロック単位で編集するためのモダンなエディターであり、テキストや画像、動画などさまざまな種類のブロックが用意されています。

カスタムブロックを作成することで、ユーザーは自分のウェブサイトに独自のコンテンツや機能を追加できます。例えば、カスタムブロックを使用して商品のカタログや予約フォーム、価格表などを作成することができます。

カスタムブロックは、ユーザーがブロックエディター上で簡単に編集できるように設計されています。


WordPressのフロントエンドのブロックエディターはReactで構築されており、新しいブロックを追加するために、カスタムブロックの作成には、通常はJavaScriptReactを使用します。

一方で、WordPressのテーマやプラグインをカスタマイズする場合には、PHPが使用されることがありますが、PHPはデータの処理やWordPressの機能拡張に使用され、ブロックエディターのカスタマイズには直接関与しません。

Reactは、Facebookによって開発されたJavaScriptライブラリであり、ユーザーインターフェース(UI)を構築するためのものです。

ブロックの外観や機能をカスタマイズするには、JavaScriptおよびReactの知識が必要で、これにより、カスタムブロックを作成してWordPressの編集エクスペリエンスを拡張することが可能になります。


WordPressでカスタムブロックをカスタマイズする方法

主にJavaScriptとReactを使用して行います。以下に、基本的な手順を示します:

1. **新しいカスタムブロックを作成する**:
  - WordPressのテーマやプラグイン内に、新しいカスタムブロックを作成します。これには、JavaScriptファイルとPHPファイルが必要です。

2. **JavaScriptとReactを使用してブロックを定義する**:
  - JavaScriptファイル内で、Reactコンポーネントを使用して新しいカスタムブロックを定義します。ブロックの外観や動作を設定し、必要に応じて属性やスタイルを定義します。

3. **PHPを使用してブロックを登録する**:
  - PHPファイル内で、`register_block_type()`関数を使用して新しいカスタムブロックを登録します。この関数には、ブロックの名前、スクリプトのハンドル、およびカスタムブロックをレンダリングするためのコールバック関数が含まれます。


4. **必要なカスタマイズを実装する**:
  - JavaScriptファイル内で、ブロックの動作や外観をカスタマイズします。これには、属性の設定、ブロックの操作、スタイルの変更などが含まれます。

5. **必要な場合はサーバーサイドコードを追加する**:
  - カスタムブロックがサーバーサイドデータを必要とする場合は、PHPファイル内でデータ取得や処理のためのコードを追加します。


これらの手順に従うことで、WordPressでカスタムブロックを作成し、カスタマイズすることができます。また、公式のWordPressドキュメンテーションやコミュニティのリソースを活用することもおすすめします。


テキストフィールドから入力されたテキストを表示するカスタムブロックを作成

テキストフィールドから入力されたテキストを表示するカスタムブロックを作成します。

1. **block.js**:

```javascript


const { registerBlockType } = wp.blocks;
const { TextControl } = wp.components;
const { useState } = wp.element;

registerBlockType('custom/testimonial-block', {
    title: 'Custom Testimonial Block',
    icon: 'format-quote',
    category: 'widgets',

    edit: ({ setAttributes, attributes }) => {
        const [testimonial, setTestimonial] = useState(attributes.testimonial || '');

        const onChangeTestimonial = newTestimonial => {
            setAttributes({ testimonial: newTestimonial });
            setTestimonial(newTestimonial);
        };

        return (
            <div>
                <TextControl
                    label="Testimonial"
                    value={testimonial}
                    onChange={onChangeTestimonial}
                />
            </div>
        );
    },

    save: ({ attributes }) => {
        return <div>{attributes.testimonial}</div>;
    },
});

このコードは、テキストフィールドから入力されたテキストを表示するカスタムブロックを定義しています。ブロックエディターで編集された内容は `attributes.testimonial` に格納され、`save`関数でそれを表示します。

このコードは、React ライブラリを使用しています。React ライブラリの useState フックを使用して、状態を管理し、コンポーネントを再レンダリングします。また、JSX 構文を使用して UI を定義しています。

2. **functions.php** (もしくはテーマのfunctions.phpやプラグインファイル):

```php


function custom_register_testimonial_block() {
    wp_register_script(
        'custom-testimonial-block',
        plugins_url('block.js', __FILE__),
        array('wp-blocks', 'wp-components', 'wp-element')
    );

    register_block_type('custom/testimonial-block', array(
        'editor_script' => 'custom-testimonial-block',
    ));
}
add_action('init', 'custom_register_testimonial_block');

このコードは、WordPressにカスタムブロックを登録するための関数を定義し、それを `init` フックにフックします。カスタムブロックのスクリプトは `wp_register_script` で登録し、 `register_block_type` でブロックを登録します。

このコードをテーマのfunctions.phpファイルやプラグインファイルに追加し、WordPressサイトで有効化すると、Custom Testimonial Blockというカスタムブロックが利用可能になります。


また、`block.js` ファイルは、通常は WordPress のテーマまたはプラグインのディレクトリ内に配置されます。具体的には、テーマの場合はテーマディレクトリ内に、プラグインの場合はプラグインディレクトリ内に配置します。

テーマディレクトリ内に配置する場合のパスは、通常は次のようになります:

wp-content/themes/your-theme-name/block.js


プラグインディレクトリ内に配置する場合のパスは、通常は次のようになります:

wp-content/plugins/your-plugin-name/block.js

`block.js` ファイルを配置した後は、WordPressのテーマやプラグインファイルで `wp_register_script` 関数や `register_block_type` 関数を使用して、WordPressにそのスクリプトを登録し、カスタムブロックを有効にします。


Reactを使用するには

Reactを使用するには、まずNode.jsをインストールし、npm (Node Package Manager) を使用してReactプロジェクトをセットアップする必要があります。その後、プロジェクト内でReactコンポーネントを作成し、それらを使用してアプリケーションを構築します。

以下に、Reactプロジェクトをセットアップする手順を示します。

1. **Node.jsのインストール**:
  最初に、[Node.jsの公式ウェブサイト](https://nodejs.org/)から最新のバージョンをダウンロードしてインストールします。Node.jsをインストールすると、npmも一緒にインストールされます。


2. **Reactプロジェクトの作成**:
  ターミナルを開き、任意のディレクトリで以下のコマンドを実行して新しいReactプロジェクトを作成します。

npx create-react-app my-react-app

これにより、`my-react-app` という名前の新しいReactプロジェクトが作成されます。

3. **Reactアプリの起動**:
  Reactプロジェクトのディレクトリに移動し、以下のコマンドを実行してReactアプリを起動します。 

cd my-react-app
npm start


  これにより、Reactアプリがブラウザで起動し、デフォルトの開発用ポート(通常は `http://localhost:3000`)でアクセスできるようになります。


以上の手順で、Reactプロジェクトがセットアップされ、VSCodeで開くことができます。VSCodeでは、React開発用の拡張機能をインストールすることで、コードのハイライトや自動補完、デバッグなどの機能を使用することができます。VSCodeでReactプロジェクトを開いた後は、コードを編集してReactアプリを開発することができます。


"- **ESLint**: JavaScriptの静的解析ツールであり、コードの品質や構文をチェックします。

- **Prettier - Code formatter**: コードの自動フォーマットを行うツールで、コードを整形して読みやすくします。

- **Reactjs code snippets**: Reactコンポーネントや関連するコードを短縮して入力できるようにするスニペット集です。

- **Debugger for Chrome**: ChromeブラウザのデバッガーをVSCode内で使用できるようにする拡張機能です。

これらの拡張機能は、それぞれ独自の役割を果たしますが、一緒に使用することでReactアプリケーションの開発を効率化することができます。"

VSCodeでReact開発用の拡張機能


Reactプロジェクトのデザインやコードを確認

Reactプロジェクトのデザインやコードを確認する場合、一般的にはプロジェクトがホストされているリポジトリやウェブサイトを参照します。GitHubやGitLabなどのバージョン管理プラットフォームには、多くのオープンソースのReactプロジェクトがホストされており、そのコードやデザインを閲覧することができます。


また、オンラインのポートフォリオサイトや個人のウェブサイトなど、開発者自身が作成したReactプロジェクトを公開している場合もあります。これらのサイトでは、実際のデモやコードの閲覧が可能です。


"パッケージ"とは、ソフトウェアやプログラムに必要なコードやリソースが含まれた単位です。パッケージには通常、特定の機能や目的を果たすために必要なファイルや依存関係が含まれています。ソフトウェア開発において、パッケージは再利用可能なコードを簡単に統合するための方法として広く使用されています。

例えば、JavaScript の場合、npm (Node Package Manager) を使用してパッケージを管理します。npm を使用すると、プロジェクトに必要なパッケージを簡単にインストールし、依存関係を解決することができます。これにより、開発者は自分でコードを書く代わりに、既存のパッケージを使用して開発を効率化することができます。

パッケージには、ライブラリ、フレームワーク、ツール、プラグインなどが含まれる場合があります。開発者はこれらのパッケージをプロジェクトに組み込むことで、必要な機能を容易に実装できます。

「パッケージ」の定義と役割について


Reactプロジェクトやコードを使用


Reactプロジェクトやコードを使用する場合、まずプロジェクトのリポジトリやウェブサイトにアクセスしてコードを取得する必要があります。次に、プロジェクトをローカル環境にクローンしたり、ダウンロードしたりして、お使いのエディタや開発環境で開きます。

以下に、Reactプロジェクトを使用する一般的な手順を示します:

1. **リポジトリのクローンまたはダウンロード**:
  GitHubなどのリポジトリで、該当するReactプロジェクトのリポジトリにアクセスして、コードをクローンまたはダウンロードします。

git clone <リポジトリのURL>

 
  または、リポジトリの「Download ZIP」ボタンをクリックしてZIPファイルをダウンロードします。


2. **プロジェクトのセットアップ**:
  プロジェクトをローカル環境にダウンロードまたはクローンしたら、ターミナルを開いてプロジェクトのディレクトリに移動し、以下のコマンドを実行して必要な依存関係をインストールします。

npm install

 

3. **プロジェクトの実行**:
  インストールが完了したら、以下のコマンドを実行してReactアプリを起動します。

   npm start

 

4. **エディタで開く**:
  プロジェクトをローカル環境にクローンまたはダウンロードした後、お使いのエディタ(例: Visual Studio Code)でプロジェクトのディレクトリを開きます。そこでReactコンポーネントやその他のファイルを編集して、プロジェクトをカスタマイズすることができます。


これらの手順に従うことで、Reactプロジェクトやコードを使用して、ローカル環境で開発やカスタマイズを行うことができます。


"React ライブラリには、React コア自体に加えて、さまざまな追加のパッケージやツールが含まれています。一般的なものには以下が含まれます:

1. **React Core**: React ライブラリの核となるもので、コンポーネントの作成、状態管理、仮想 DOM の操作などを提供します。

2. **React DOM**: React がブラウザ上で動作するようにするためのパッケージで、DOM へのレンダリングを可能にします。

3. **React Native**: モバイルアプリケーションを構築するための React のフレームワークで、ネイティブコンポーネントとの統合を提供します。

4. **React Router**: React アプリケーションのためのルーティング機能を提供するライブラリです。

5. **Redux**: アプリケーションの状態管理のためのライブラリで、複雑なアプリケーション状態を効果的に管理するためのツールを提供します。

6. **React Hooks**: 関数コンポーネント内で状態やライフサイクルの機能を使用できるようにする API です。

などがあります。これらは React ライブラリの一部であり、それぞれが特定の目的や機能を提供しています。"

React ライブラリ


この記事が気に入ったらサポートをしてみませんか?