REST APIでWPとReactを接続する(カスタムテーブル)

ホーム WordPress REST API REST APIでWPとReactを接続する(カスタムテーブル)
クラウドソーシング「ランサーズ」
WP×React

WordPress側でカスタムテーブルを作成し、それをREST APIでつなぐ方法はいくつかのステップに分かれています。以下にその手順を説明します。

1. カスタムテーブルの作成

まず、WordPressのデータベースにカスタムテーブルを作成します。これは、テーマの functions.php ファイルやカスタムプラグイン内で行うことができます。


function create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_table';
    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name text NOT NULL,
        value text NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}

add_action( 'after_setup_theme', 'create_custom_table' );

2. REST API エンドポイントの作成

次に、カスタムテーブルに対して操作を行うためのREST APIエンドポイントを作成します。これは、テーマの functions.php ファイルやカスタムプラグイン内で行います。


function register_custom_table_routes() {
    register_rest_route('custom/v1', '/data', array(
        'methods' => 'GET',
        'callback' => 'get_custom_table_data',
    ));
}

add_action('rest_api_init', 'register_custom_table_routes');

function get_custom_table_data() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_table';

    $results = $wpdb->get_results("SELECT * FROM $table_name", OBJECT);
    return new WP_REST_Response($results, 200);
}

3. Reactアプリケーションからデータを取得

ReactアプリケーションからカスタムREST APIエンドポイントを使用してデータを取得します。


import React, { useEffect, useState } from 'react';
import axios from 'axios';

function App() {
  const [data, setData] = useState([]);

  useEffect(() => {
    axios.get('https://your-wordpress-site.com/wp-json/custom/v1/data')
      .then(response => {
        setData(response.data);
      })
      .catch(error => {
        console.error('Error fetching data: ', error);
      });
  }, []);

  return (
    

Custom Table Data

{data.map(item => (

{item.name}

{item.value}

))}
); } export default App;

認証が必要な場合

カスタムデータの読み書きに認証が必要な場合、JWTやOAuthなどの認証を追加します。前述のように、JWTプラグインを使用して認証を実装できます。

JWTプラグインの設定と使用方法の例

1. JWTプラグインのインストール:
– プラグイン「JWT Authentication for WP REST API」をインストールして有効化します。

2. 認証付きAPIリクエスト:


import React, { useEffect, useState } from 'react';
import axios from 'axios';

function App() {
  const [data, setData] = useState([]);

  useEffect(() => {
    const fetchData = async () => {
      try {
        // トークンを取得
        const tokenResponse = await axios.post('https://your-wordpress-site.com/wp-json/jwt-auth/v1/token', {
          username: 'your-username',
          password: 'your-password'
        });

        const token = tokenResponse.data.token;

        // トークンを使用してデータを取得
        const response = await axios.get('https://your-wordpress-site.com/wp-json/custom/v1/data', {
          headers: {
            'Authorization': `Bearer ${token}`
          }
        });

        setData(response.data);
      } catch (error) {
        console.error('Error fetching data: ', error);
      }
    };

    fetchData();
  }, []);

  return (
    

Custom Table Data

{data.map(item => (

{item.name}

{item.value}

))}
); } export default App;

まとめ

この方法により、WordPressのカスタムテーブルとReactフロントエンドを効果的に連携させることができます。その他の質問や特定の要件があれば教えてください。

要点:

  • カスタムテーブルを作成: WordPressのデータベースにカスタムテーブルを作成します。
  • REST API エンドポイントを作成: カスタムテーブル用のREST APIエンドポイントを作成します。
  • Reactからデータを取得: ReactアプリケーションからREST APIを使用してデータを取得します。
  • 認証が必要な場合: JWTやOAuthを使用して認証を行います。

Web制作のご依頼・ご相談など、お気軽にご連絡ください。

お問い合わせ