ホームページ > ウェブフロントエンド > CSSチュートリアル > WordPress Multi-Multisite:ケーススタディ

WordPress Multi-Multisite:ケーススタディ

Joseph Gordon-Levitt
リリース: 2025-03-07 17:06:11
オリジナル
508 人が閲覧しました

WordPress Multi-Multisite: A Case Study

チャレンジ: WordPress管理ダッシュボードの構築25のマルチサイトインスタンスに広がる約900のブログからGoogleアナリティクスデータを効率的に表示します。 重要なのは、このような大きなデータセットの処理に固有のパフォーマンスのハードルを克服することでした。

この記事は、開発プロセスの詳細を説明し、遭遇した重要な決定と課題を強調しています。 WordPress REST API、PHP対JavaScriptの議論、生産環境の制限、セキュリティ上の考慮事項、データベース設計、さらにはAIの役割を調べます。

キー用語

ダイビングする前に、いくつかの条件を明確にしましょう:

    WordPress Multisite:単一のインストールから複数のブログの管理を可能にするコアWordPress機能。 ブログはコアファイルとデータベースを共有していますが、個々のメディアフォルダーとブログ固有のデータベーステーブルがあります。
  • wordpressmulti-
  • multisite:
  • WordPress Multisiteインストールの複数のインスタンスを管理する用語。このアプローチは、異なるクライアント間で単一のマルチサイトを共有する複雑さを回避します。 ダッシュボードサイト:集計された分析データを表示するためのカスタムダッシュボードをホストするサイト。
  • クライアントサイト:
  • データが収集される25のWordPressマルチサイトインスタンス。 実装戦略
  • ソリューションには、ダッシュボードサイトと25のすべてのクライアントサイトの両方にインストールされている単一のWordPressプラグインが含まれていました。 このプラグインには、2つの主要な機能があります
  • クライアントサイトのカスタムAPIエンドポイントを介してデータを公開します

ダッシュボードサイトのクライアントサイトからデータを削り、それをキャッシュし、ダッシュボードに表示します。

WordPress REST API:Foundation

    WordPress REST APIは、このプロジェクトの中心でした。 その拡張性により、カスタムエンドポイントの作成が必要なデータを公開することができました。
  1. コードスニペット:apiエンドポイント登録

php vs. javascript:非同期アドバンテージ

最初に、PHPベースのアプローチが考慮されました。ただし、同期PHP処理とサーバー側の実行時間制限により、これは実用的ではありませんでした。 JavaScriptの非同期機能は優れたソリューションを提供し、すべてのサイトから同時データ取得を可能にします。

JavaScriptの実装により、データの検索時間が大幅に短縮されました。推定925秒(同期)から約2秒(非同期)。 ただし、ブラウザとサーバーのリクエスト制限では、リクエスト間の150ミリ秒の遅延が必要でした。

コードスニペット:非同期データの取得

<?php [...]
function register(\WP_REST_Server $server) {
  $endpoints = $this->get();
  foreach ($endpoints as $endpoint_slug => $endpoint) {
    register_rest_route(
      $endpoint['namespace'],
      $endpoint['route'],
      $endpoint['args']
    );
  }
}
// ... (rest of the endpoint definitions) ...
ログイン後にコピー
ログイン後にコピー

phpとjavascriptの接続

PHPエンドポイントとjavaScriptコードは、wp_localize_script()を使用して統合され、エンドポイントURLおよびその他の必要なデータをJavaScriptにシームレスに渡しました。

セキュリティ:認証とcors

セキュリティは、API認証とCORS(クロスオリジンリソース共有)ヘッダーのアプリケーションパスワードを介して対処され、ダッシュボードサイトからクライアントサイトへのクロスドメイン要求を許可しました。 最小限の特権の原則に従い、CORSアクセスを必要なエンドポイントにのみ制限します。

コードスニペット:CORSヘッダーの実装

<?php [...]
function register(\WP_REST_Server $server) {
  $endpoints = $this->get();
  foreach ($endpoints as $endpoint_slug => $endpoint) {
    register_rest_route(
      $endpoint['namespace'],
      $endpoint['route'],
      $endpoint['args']
    );
  }
}
// ... (rest of the endpoint definitions) ...
ログイン後にコピー
ログイン後にコピー

データベースキャッシュ

パフォーマンスを改善するために、データは、リレーショナルデータベースモデルを使用して、ダッシュボードサイトのカスタムデータベーステーブルにキャッシュされます。 データベーススキーマは、最初にdocblocksを使用して設計され、その後LLMの支援を受けて洗練されました。

コードスニペット:データベーステーブルの作成SQL

async function getBlogsDetails(blogs) {
  let promises = [];
  blogs.forEach((blog, index) => {
    // ... (code for delayed fetch requests) ...
  });
  // ... (code for Promise.all and error handling) ...
}
ログイン後にコピー

結果と将来の考慮事項

MVPは機能的であり、ブログのトラフィックパターンに関する貴重な洞察を提供します。 将来の改善には、最新のJavaScriptフレームワークの使用や、AWS Lambdaなどのサーバーレスソリューションの探索が含まれ、スケーラビリティとパフォーマンスが向上することが含まれます。 先制的なデータ編集のためにCRONジョブを使用することも潜在的な強化です。

この記事では、開発プロセスの高レベルの概要を提供します。 遭遇した具体的な課題とソリューションは、大規模なWordPressマルチマルチスイト展開を操作する開発者に貴重な洞察を提供します。

以上がWordPress Multi-Multisite:ケーススタディの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート