5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPress 7.0のAI Connector — PHPからLLMを呼ぶ標準APIがやってくる

5
Posted at

はじめに: WordPressにAI機能が標準搭載される意味

2026年4月9日にリリース予定のWordPress 7.0に、AI Clientが標準搭載されます。正式名称は AI Client(開発者向けAPI)と Connectors API(設定・認証基盤)です。本記事ではこの2つをまとめて「AI Connector」と呼ぶ場合がありますが、公式ドキュメントでは上記の名称が使われています。

これはちょっとしたニュースではありません。全ウェブサイトの約43%がWordPressで動いています。そのCMSのコアに「LLMを呼び出す標準API」が入るということは、PHPからAIを使う方法にデファクトスタンダードが生まれる可能性があるということです。

自分はWordPressプラグインをいくつか開発・保守しています。これまでAI機能を組み込むには、OpenAIのPHP SDKを直接叩いたり、独自のHTTPクライアントを書いたりしていました。プラグインごとにAPIキーの管理UIを作り、プロバイダー切り替えのロジックも自前で実装する。正直、面倒でした。

WordPress 7.0のAI Clientは、この状況を大きく変える可能性があります。

なぜWordPress 7.0にAI機能が標準搭載されるのか

WordPress内部での議論の経緯

WordPress CoreへのAI機能統合は、2025年後半からMake WordPress Coreで活発に議論されてきました。きっかけは、WordPress.orgプラグインディレクトリに登録されたAI関連プラグインが2025年末時点で1,000を超えたことです。

プラグインの乱立は以下の問題を引き起こしていました。

  • APIキー管理の分散: プラグインごとにAPIキーを設定する必要があり、同じOpenAIキーを5つのプラグインに重複入力するようなケースが頻発
  • セキュリティリスク: 各プラグインが独自にAPIキーを保存するため、1つのプラグインの脆弱性がAPIキー漏洩につながる
  • ユーザー体験の断片化: プラグインAでは動くプロンプトがプラグインBでは動かない、といった互換性の問題

Make WordPress Coreでは、「コアに認証基盤を入れるべきか、プラグインに任せるべきか」が繰り返し議論されました。最終的に、AIはWordPressエコシステムの重要な技術であり、コアがその基盤を提供すべきだという方針にまとまりました。

「Connectors API」という名前の意図

注目すべきは、この機能が「AI API」ではなく「Connectors API」と名付けられた点です。これは意図的な設計判断です。

Connectors APIは、AIプロバイダーだけでなく、将来的に決済サービス、メール配信サービス、外部ストレージなど、あらゆる外部サービスとの接続を標準化する汎用基盤として設計されています。AIはその最初のユースケースに過ぎません。

この設計思想により、WordPress 7.0のConnectors APIは単なるAI統合にとどまらない、WordPress生態系全体のインフラ進化として位置づけられています。

WordPress 7.0 AI Connector機能の概要

AI Connectorは、大きく2つの要素で構成されています。

1. Connectors API(設定基盤)

管理画面の「設定 > Connectors」に、AIプロバイダーの一元管理画面が追加されます。サイトオーナーがここでAPIキーを1回設定すれば、すべてのプラグインからそのキーを共有できます。

対応プロバイダーは以下の3つです。

  • OpenAI(GPTモデル)
  • Anthropic(Claudeモデル)
  • Google(Geminiモデル)

各プロバイダーは公式プラグインとして提供されます。「プラグイン > 新規追加」から検索してインストールするだけです。

2. WP AI Client(開発者向けAPI)

プラグイン開発者はwp_ai_client_prompt()という単一の関数を通じてLLMを呼び出します。どのプロバイダーが裏で動いているかを意識する必要はありません。

概念図
// プラグイン開発者が書くコード
wp_ai_client_prompt('要約してください')
    ->generate_text();

// ↓ WordPress Core が自動的にルーティング ↓

// サイトオーナーがConnectors画面で設定したプロバイダーに送信
// OpenAI / Anthropic / Google のいずれか

この設計により、プラグイン側のコードを一切変更せずにプロバイダーを切り替えられます。

php-ai-clientパッケージの仕組み

AI Clientの内部ではwordpress/php-ai-clientというComposerパッケージが使われています。

アーキテクチャの3層構造

レイヤー 役割
Settings UI Connectors画面でのAPIキー一元管理
Abstraction Layer php-ai-client SDKによる統一API
Provider Plugins OpenAI / Anthropic / Google の公式プラグイン

プロンプトビルダーパターン

APIはビルダーパターンを採用しています。メソッドチェーンで直感的にパラメータを組み立てられます。

メソッド一覧
wp_ai_client_prompt('プロンプト文字列')
    ->using_system_instruction('システム指示')  // AIの振る舞いを定義
    ->using_temperature(0.3)                    // 出力のランダム性を制御
    ->using_model_preference('claude-sonnet-4-6', 'gpt-5.1')  // 優先モデル指定
    ->with_file($file_path, $mime_type)         // 画像等のファイル添付
    ->as_json_response($schema)                 // JSON形式で出力
    ->generate_text();                          // テキスト生成を実行

主要メソッドは以下の通りです。

メソッド 用途
generate_text() テキスト生成
generate_image() 画像生成(1枚)
generate_images($count) 画像生成(複数枚)
using_model($provider, $model) 特定モデルを強制指定
using_max_tokens($count) トークン上限設定

WordPress独自の慣習として、メソッド名はスネークケース、エラーはWP_Errorオブジェクトで返されます。WordPressプラグイン開発者には馴染みやすい設計です。

ハンズオン: WordPressプラグインからLLMを呼び出すコード例

実際に動くプラグインのコードを見てみましょう。投稿保存時に自動で抜粋を生成するプラグインです。

ai-excerpt-generator.php
<?php
/**
 * Plugin Name: AI Excerpt Generator
 * Description: 投稿保存時にAIで抜粋を自動生成
 * Version:     1.0.0
 * Requires at least: 7.0
 */

add_action( 'save_post', 'aieg_generate_excerpt', 10, 2 );

function aieg_generate_excerpt( $post_id, $post ) {
    // 自動保存・リビジョン・既存の抜粋がある場合はスキップ
    if ( wp_is_post_autosave( $post_id ) ||
         wp_is_post_revision( $post_id ) ||
         ! empty( $post->post_excerpt ) ) {
        return;
    }

    // AI Client が利用可能か確認
    if ( ! function_exists( 'wp_ai_client_prompt' ) ) {
        return;
    }

    $content = wp_strip_all_tags( $post->post_content );
    if ( empty( $content ) ) {
        return;
    }

    // JSON Schema で出力形式を定義
    $schema = array(
        'type'       => 'object',
        'properties' => array(
            'excerpt' => array(
                'type'        => 'string',
                'description' => '1〜2文の要約。日本語で記述。',
            ),
        ),
        'required' => array( 'excerpt' ),
    );

    // AI Client でテキスト生成
    $json = wp_ai_client_prompt(
            "以下の記事を1〜2文で要約してください:\n\n" . $content
        )
        ->using_system_instruction( 'あなたはWordPress記事の要約を生成する専門家です。' )
        ->using_temperature( 0.3 )
        ->as_json_response( $schema )
        ->generate_text();

    // エラーハンドリング(WP_Error パターン)
    if ( is_wp_error( $json ) ) {
        error_log( 'AI excerpt failed: ' . $json->get_error_message() );
        return;
    }

    $result = json_decode( $json, true );
    if ( isset( $result['excerpt'] ) ) {
        wp_update_post( array(
            'ID'           => $post_id,
            'post_excerpt' => sanitize_text_field( $result['excerpt'] ),
        ) );
    }
}

ポイントをまとめます。

  • function_exists()でグレースフルデグラデーションを実現している
  • as_json_response()にスキーマを渡すことで構造化された応答を得られる
  • エラーハンドリングはWordPress標準のis_wp_error()を使う
  • プロバイダーの指定は一切不要。Connectors画面の設定が自動的に使われる

具体的ユースケース3選

1. 記事要約の自動生成

上のコード例がまさにこれです。save_postフックで記事保存時に抜粋を自動生成します。temperature を低め(0.3)に設定することで、安定した出力が得られます。

2. SEOメタディスクリプションの提案

seo-description-suggest.php
function suggest_meta_description( $post_id ) {
    $content = get_post_field( 'post_content', $post_id );
    $content = wp_strip_all_tags( $content );

    $schema = array(
        'type'       => 'object',
        'properties' => array(
            'description' => array(
                'type'        => 'string',
                'description' => '120文字以内のメタディスクリプション。',
            ),
            'keywords' => array(
                'type'  => 'array',
                'items' => array( 'type' => 'string' ),
                'description' => '主要キーワードを3〜5個。',
            ),
        ),
        'required' => array( 'description', 'keywords' ),
    );

    return wp_ai_client_prompt(
            "以下の記事のSEO用メタディスクリプションとキーワードを提案してください:\n\n"
            . mb_substr( $content, 0, 3000 )
        )
        ->using_system_instruction( 'あなたはSEOの専門家です。検索意図を意識してください。' )
        ->using_temperature( 0.4 )
        ->as_json_response( $schema )
        ->generate_text();
}

as_json_response()でスキーマを定義すれば、descriptionとkeywordsを分離して取得できます。LLMの出力をパースする苦労がなくなります。

3. コメントモデレーション

comment-moderator.php
add_filter( 'pre_comment_approved', 'ai_moderate_comment', 10, 2 );

function ai_moderate_comment( $approved, $commentdata ) {
    if ( ! function_exists( 'wp_ai_client_prompt' ) ) {
        return $approved;
    }

    $schema = array(
        'type'       => 'object',
        'properties' => array(
            'is_spam'  => array( 'type' => 'boolean' ),
            'reason'   => array( 'type' => 'string' ),
            'toxicity' => array(
                'type' => 'number',
                'description' => '0〜1のスコア。0.7以上は有害。',
            ),
        ),
        'required' => array( 'is_spam', 'toxicity' ),
    );

    $json = wp_ai_client_prompt(
            "以下のコメントを評価してください:\n\n" . $commentdata['comment_content']
        )
        ->using_system_instruction(
            'コメントのスパム判定と有害性スコアリングを行ってください。'
        )
        ->using_temperature( 0.1 )
        ->as_json_response( $schema )
        ->generate_text();

    if ( is_wp_error( $json ) ) {
        return $approved; // AI判定失敗時は通常フローにフォールバック
    }

    $result = json_decode( $json, true );

    if ( ! empty( $result['is_spam'] ) || ( $result['toxicity'] ?? 0 ) >= 0.7 ) {
        return 'spam';
    }

    return $approved;
}

temperatureを0.1まで下げて判定の一貫性を確保しています。AIが落ちてもis_wp_error()で通常フローに戻すのがポイントです。

セキュリティ・APIキー管理・コスト管理の注意点

APIキーの管理

Connectors画面に入力されたAPIキーは、WordPressのデータベースオプションとして保存されます。WooCommerceが決済キーを保存するのと同じ仕組みです。

注意点は以下の通りです。

  • wp-config.phpでの定数定義も可能。本番環境ではこちらが推奨される
  • APIキーがDB内に平文で保存される点に留意する。DBアクセス権限の管理が重要
  • ステージング環境と本番環境でキーを分けること

アクセス制御

AIプロンプトの実行は、Connectors APIのアクセス制御の仕組みで制限される見込みです。具体的なcapability名や設定方法はRC版で検証中のため、正式版のドキュメントを確認してください。

以下は、ケイパビリティベースの制御が導入された場合の想定コード例です。

capability-check.php
// 特定のロールにAI実行権限を付与する例(想定)
// 正式なcapability名は公式ドキュメントで確認してください
function grant_ai_to_editors() {
    $editor = get_role( 'editor' );
    $editor->add_cap( 'prompt_ai' );
}
add_action( 'admin_init', 'grant_ai_to_editors' );

コスト管理

標準のAI Clientにはコスト制限の仕組みがありません。自前で対策を講じる必要があります。

  • リクエスト数のレートリミットをプラグイン側で実装する
  • using_max_tokens()でトークン上限を明示的に設定する
  • using_temperature()を低めにして無駄なリトライを減らす
  • 月間API使用量を監視するダッシュボードウィジェットの作成を検討する

パフォーマンスとコスト面の実践的な考慮事項

AI ClientでLLMを呼び出す際、最も注意すべきはレイテンシとコストです。LLMのAPI呼び出しは通常1〜10秒かかります。これをページ生成のリクエストサイクル内で同期的に実行すると、サイトの応答速度が大幅に悪化します。

LLM呼び出しのレイテンシがページ生成に与える影響

wp_cronで非同期処理にする方法

save_postフック内で直接LLMを呼ぶ代わりに、wp_cronのワンタイムイベントとして登録する方法です。

async-ai-excerpt.php
// 1. 保存時にcronイベントを登録するだけ
add_action( 'save_post', 'aieg_schedule_excerpt', 10, 2 );

function aieg_schedule_excerpt( $post_id, $post ) {
    if ( wp_is_post_autosave( $post_id ) ||
         wp_is_post_revision( $post_id ) ||
         ! empty( $post->post_excerpt ) ) {
        return;
    }

    // 既にスケジュール済みなら重複登録しない
    if ( wp_next_scheduled( 'aieg_generate_excerpt_event', array( $post_id ) ) ) {
        return;
    }

    // 即時実行のワンタイムイベントとして登録
    wp_schedule_single_event( time(), 'aieg_generate_excerpt_event', array( $post_id ) );
}

// 2. cronイベントのハンドラでLLMを呼び出す
add_action( 'aieg_generate_excerpt_event', 'aieg_async_generate_excerpt' );

function aieg_async_generate_excerpt( $post_id ) {
    if ( ! function_exists( 'wp_ai_client_prompt' ) ) {
        return;
    }

    $post    = get_post( $post_id );
    $content = wp_strip_all_tags( $post->post_content );

    if ( empty( $content ) ) {
        return;
    }

    $schema = array(
        'type'       => 'object',
        'properties' => array(
            'excerpt' => array(
                'type'        => 'string',
                'description' => '1〜2文の要約。日本語で記述。',
            ),
        ),
        'required' => array( 'excerpt' ),
    );

    $json = wp_ai_client_prompt(
            "以下の記事を1〜2文で要約してください:\n\n" . $content
        )
        ->using_system_instruction( 'あなたはWordPress記事の要約を生成する専門家です。' )
        ->using_temperature( 0.3 )
        ->using_max_tokens( 200 )
        ->as_json_response( $schema )
        ->generate_text();

    if ( is_wp_error( $json ) ) {
        error_log( 'Async AI excerpt failed: ' . $json->get_error_message() );
        return;
    }

    $result = json_decode( $json, true );
    if ( isset( $result['excerpt'] ) ) {
        wp_update_post( array(
            'ID'           => $post_id,
            'post_excerpt' => sanitize_text_field( $result['excerpt'] ),
        ) );
    }
}

注意点として、WordPressのwp_cronはページリクエストに依存する擬似cronです。本番環境ではDISABLE_WP_CRONtrueにし、システムcronからwp-cron.phpを呼び出す設定を推奨します。

Transients APIでLLMの応答をキャッシュする

同じプロンプトに対するLLMの応答をTransients APIでキャッシュすれば、APIコストを大幅に削減できます。

cached-ai-prompt.php
/**
 * LLMの応答をTransients APIでキャッシュするラッパー関数
 *
 * @param string $prompt     プロンプト文字列
 * @param string $system     システムインストラクション
 * @param int    $expiration キャッシュ有効期間(秒)。デフォルト24時間
 * @return string|WP_Error
 */
function cached_ai_prompt( $prompt, $system = '', $expiration = DAY_IN_SECONDS ) {
    // プロンプトからキャッシュキーを生成
    $cache_key = 'ai_cache_' . md5( $prompt . $system );

    // キャッシュがあれば即座に返す
    $cached = get_transient( $cache_key );
    if ( false !== $cached ) {
        return $cached;
    }

    if ( ! function_exists( 'wp_ai_client_prompt' ) ) {
        return new WP_Error( 'ai_unavailable', 'AI Client is not available.' );
    }

    $builder = wp_ai_client_prompt( $prompt )
        ->using_temperature( 0.3 )
        ->using_max_tokens( 1000 );

    if ( ! empty( $system ) ) {
        $builder->using_system_instruction( $system );
    }

    $result = $builder->generate_text();

    if ( is_wp_error( $result ) ) {
        return $result;
    }

    // 成功時のみキャッシュに保存
    set_transient( $cache_key, $result, $expiration );

    return $result;
}

この例は考え方を示すためのものです。実運用ではモデル名、temperature、schemaもキャッシュキーに含めることを推奨します。

キャッシュ戦略のポイントは以下の通りです。

用途 キャッシュ有効期間 理由
記事要約 24時間〜7日 記事内容が変わらなければ結果は同じ
SEOメタデータ 24時間 検索トレンドを反映するため定期更新
コメントモデレーション キャッシュしない 各コメントは一意なので再利用できない
カテゴリ提案 7日 カテゴリ体系が頻繁に変わることは少ない

API呼び出しコストの試算

1記事あたりのコストを具体的に試算します。日本語の一般的なブログ記事(2,000〜3,000文字)を前提とします。

処理 入力トークン 出力トークン GPT-4.1 mini コスト Claude Sonnet コスト
記事要約 約2,000 約100 $0.001 $0.007
SEOメタデータ 約2,000 約200 $0.001 $0.008
コメント判定(1件) 約300 約50 $0.0002 $0.001
1記事あたり合計 約$0.002 約$0.016

上記は2026年3月時点の参考値です。最新の料金は各公式サイトで確認してください。

月間100記事を公開するメディアサイトの場合、GPT-4.1 miniなら月額約$0.2、Claude Sonnetなら月額約$1.6です。Transients APIでキャッシュを活用すれば、この30〜50%を削減できます。

制限事項 -- 現時点のAI Clientにできないこと

WordPress 7.0のAI Clientは「まず最小限の機能を正しく提供する」方針で設計されています。以下の機能は意図的にスコープ外とされています。

機能 状況 補足
ストリーミング出力 非対応 Server-Sent Eventsによるリアルタイム表示には対応していない。チャットUIのような逐次表示が必要な場合は、プラグイン側でProvider APIを直接呼び出す必要がある
Function Calling / Tool Use スコープ外 LLMに外部ツールを実行させる仕組みは含まれていない。エージェント的な動作が必要な場合は自前で実装する
ベクトル検索 / RAG 含まれない Embeddingsの生成やベクトルDBとの連携は提供されない。RAG(Retrieval-Augmented Generation)を構築する場合は、別途Pinecone等を利用する
マルチターン会話 非サポート wp_ai_client_prompt()は1回のリクエスト・レスポンスで完結する。会話履歴の管理はプラグイン側の責任
モデルの微調整(Fine-tuning) 対象外 モデルのカスタマイズやトレーニングデータのアップロードは含まれない

これらの制限は、今後のマイナーリリースやWordPress 7.1以降で段階的に対応される可能性があります。特にストリーミング出力はMake WordPress Coreでの議論が活発で、優先度の高い次期機能と見られています。

既存のAI系WordPressプラグインとの違い

これまでもAI機能を提供するWordPressプラグインは多数ありました。Jetkpack AI、AI Engine、Bertha AIなど。これらと何が違うのかを整理します。

比較項目 既存プラグイン WordPress 7.0 AI Client
APIキー管理 プラグインごとに個別設定 Connectors画面で一元管理
プロバイダー対応 プラグインに依存 OpenAI / Anthropic / Google 標準対応
プロバイダー切替 コード修正が必要 管理画面から切替。コード変更不要
API互換性 各プラグイン独自のAPI wp_ai_client_prompt() に統一
プラグイン間連携 連携なし。各プラグインが独自にAPI呼び出し 全プラグインが共通の認証情報を共有

最大の違いは「インフラとしての提供」です。既存プラグインはAI機能そのものを提供していました。AI Clientは機能ではなく基盤を提供します。プラグイン開発者は認証やプロバイダー切り替えの実装から解放され、本来のビジネスロジックに集中できます。

既存プラグインからの移行パス

既にAI系プラグインを使っている場合、WordPress 7.0のAI Clientにどう移行すればよいかを具体的に解説します。

AI Engine / Jetpack AIからの移行

AI EngineやJetpack AIを「コンテンツ生成」用途で使っている場合、管理画面での利用は引き続きそのままで問題ありません。これらのプラグインは独自のUI(エディター統合やチャットボット)を提供しており、AI Clientが直接置き換えるものではありません。

ただし、テーマやカスタムプラグインからAI EngineのPHP APIを呼び出している場合は、AI Clientへの書き換えを検討すべきです。

// AI Engine の場合(移行前)
$ai = new Meow_MWAI_Core();
$query = new Meow_MWAI_Query_Text( '記事を要約してください' );
$query->set_model( 'gpt-4.1-mini' );
$query->set_max_tokens( 200 );
$reply = $ai->run_query( $query );
$text  = $reply->result;

// WordPress 7.0 AI Client(移行後)
$text = wp_ai_client_prompt( '記事を要約してください' )
    ->using_max_tokens( 200 )
    ->generate_text();

移行のメリットは以下の通りです。

  • AI Engineプラグインへの依存がなくなる(AI Engineが更新されなくなっても動作する)
  • APIキーをConnectors画面で一元管理できる
  • プロバイダーの切り替えがコード変更なしで可能になる

独自にOpenAI PHP SDKを使っていた場合のBefore/After

OpenAIのPHP SDKを直接使ってカスタム実装していたケースは、最も移行メリットが大きいパターンです。

// === Before: OpenAI PHP SDK を直接使用 ===

use OpenAI;

function generate_summary_old( $content ) {
    // APIキーの管理を自前で実装する必要がある
    $api_key = get_option( 'my_plugin_openai_key' );
    if ( empty( $api_key ) ) {
        return new WP_Error( 'no_key', 'APIキーが設定されていません。' );
    }

    $client = OpenAI::client( $api_key );

    try {
        $response = $client->chat()->create( [
            'model'    => 'gpt-4.1-mini',
            'messages' => [
                [
                    'role'    => 'system',
                    'content' => 'あなたは記事要約の専門家です。',
                ],
                [
                    'role'    => 'user',
                    'content' => "以下を要約:\n\n" . $content,
                ],
            ],
            'max_tokens'  => 200,
            'temperature' => 0.3,
        ] );

        return $response->choices[0]->message->content;
    } catch ( \Exception $e ) {
        return new WP_Error( 'api_error', $e->getMessage() );
    }
}
// === After: WordPress 7.0 AI Client ===

function generate_summary_new( $content ) {
    if ( ! function_exists( 'wp_ai_client_prompt' ) ) {
        return new WP_Error( 'ai_unavailable', 'AI Client is not available.' );
    }

    return wp_ai_client_prompt( "以下を要約:\n\n" . $content )
        ->using_system_instruction( 'あなたは記事要約の専門家です。' )
        ->using_max_tokens( 200 )
        ->using_temperature( 0.3 )
        ->generate_text();
}

変更点を整理します。

項目 Before(自前実装) After(AI Client)
コード量 約25行 約10行
APIキー管理 get_option()で自前取得 Connectors画面で一元管理(コード不要)
エラーハンドリング try-catchで例外処理 is_wp_error()で統一
プロバイダー切替 コード書き換え必須 管理画面から切替可能
Composerの依存 openai-php/clientが必要 不要(コア内蔵)
設定画面の実装 自前でUI作成が必要 不要

移行時の注意点

  • function_exists( 'wp_ai_client_prompt' )によるフォールバックを必ず入れること。WordPress 6.x以下との互換性を維持するため
  • 移行前のプラグイン独自の設定画面は、WordPress 7.0以上では「Connectors画面をご利用ください」と案内するUIに切り替えるのが望ましい
  • using_model()で特定モデルを強制指定すると、プロバイダー切り替えの恩恵が受けられなくなる。可能な限りusing_model_preference()を使い、複数候補を指定する

WordPress 7.0のリリーススケジュールと準備

リリースタイムライン

  • RC1(2026年3月24日): リリース済み。AI Client / Connectors APIの全機能が含まれる
  • RC2(2026年3月26日): バグ修正のみ。新機能の追加はない
  • RC3(2026年4月2日予定): 必要に応じたバグ修正
  • GA(2026年4月9日): WordCamp Asia Contributor Dayに合わせた正式リリース

今すぐRC版で試すための手順

本番環境では絶対にRC版を使わないでください。ローカル環境またはステージング環境で検証します。

# 1. wp-envでRC版のローカル環境を構築する(推奨)
npx @wordpress/env start --wp=7.0-RC3

# 2. または、既存の開発環境にRC版を手動インストールする
wp core update --version=7.0-RC3 --force

# 3. AIプロバイダープラグインをインストール(例: OpenAI)
wp plugin install wordpress-openai-provider --activate

# 4. APIキーを設定
wp option update connectors_openai_api_key "sk-your-api-key-here"

# 5. WP-CLIでAI Clientの動作確認
wp eval 'var_dump( function_exists( "wp_ai_client_prompt" ) );'
# => bool(true)

テーマ・プラグイン開発者が準備しておくべきこと

優先度 対応項目 詳細
RC版での動作検証 既存のプラグイン/テーマがWordPress 7.0で正常に動作するか確認する
function_exists()ガード AI Clientを使うコードには必ず存在チェックを入れ、6.x以下でもエラーにならないようにする
独自AI実装の移行計画 OpenAI SDKを直接使っている箇所をリストアップし、移行スケジュールを立てる
アクセス制御の確認 AI機能を使うユーザーロールに適切な権限が付与されているか、正式版のドキュメントで確認する
設定画面の整理 プラグイン独自のAPIキー設定画面がある場合、Connectors画面への誘導UIを検討する

まとめ: PHP開発者にとっての転換点

WordPress 7.0のAI Clientは、PHP開発者がLLMを使う方法に標準的な選択肢を提供します。

  • プラグイン開発者wp_ai_client_prompt()だけ覚えればよい
  • サイトオーナーはConnectors画面でAPIキーを1回設定するだけ
  • プロバイダーロックインがなくなる。OpenAIからClaudeへの乗り換えもコード変更ゼロ

RC1は2026年3月24日にリリース済み。正式版は4月9日のWordCamp Asia Contributor Dayに合わせて公開される予定です。

既にWordPressプラグインを開発しているなら、今のうちにRC版で動作検証しておくことを推奨します。独自のAPI呼び出しコードをwp_ai_client_prompt()に置き換える作業は、早めに着手したほうがよいでしょう。

PHPからLLMを呼ぶ「当たり前の方法」が、WordPress 7.0で一つの形になろうとしています。

参考リンク

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?