WordPress のコードベース

WordPress は、Subversion という集中型バージョン管理システムで管理されています。このリポジトリのミラーは、分散型 VCS である Git を介して利用できます。

WordPress のコードベースには、Subversion、Git、Trac (バグトラッカー)、直接のダウンロードなど、さまざまな方法でアクセスできます。

WordPress コードの構成

上記の Git または Subversion のいずれかのリポジトリを使用している場合、コアのコードベースは前述の通り src ディレクトリにあります。ダウンロードされるパッケージはこのディレクトリの「ビルド」バージョンを提供し、そのためこれらのファイルはルートに配置されます。コードベースは、約1000のファイルやディレクトリから構成されています。

index.phpwp-load.phpwp-blog-header.phpwp-settings.php などの初期起動のためのファイルは、この src ディレクトリに配置されます。XML-RPC、トラックバック、コメント投稿のエンドポイントなどの特別なハンドラもルートにあります。

残りのファイルは、3つの異なるディレクトリに分けられています。wp-adminwp-includes、そして wp-content です。

Top ↑

wp-content

wp-content ディレクトリは、テーマ、プラグイン、アップロードなど、ユーザー定義のファイルやサイト固有のファイルで構成されています。リポジトリには、バンドルされているプラグイン (例: Hello Dolly) とテーマ (例: Twenty Fifteen) 用の wp-content ディレクトリしかありません。

Top ↑

wp-includes

wp-includes ディレクトリは、WordPress の主要なコアとサードパーティライブラリで構成されています。これらのファイルの多くは、アプリケーションを起動する際に読み込まれます。

wp-includes に含まれるファイルは、(ほぼ) 標準的な接頭辞と接尾辞のセットで扱われます。

  • class-*.php – PHP クラス。一部、外部ライブラリもあります。
  • ms-*.php – WordPress のマルチサイト機能に特化したコードです。
  • default-*.php – デフォルトの機能を実装または定義するコード。すなわち定数、ウィジェット、およびフィルターです。
  • *deprecated.php – 非推奨となった機能です。
  • *-template.php – 関連する API のテンプレート機能です。

wp-admin/includes にあるファイルも、同様の命名規則に従っています。

Top ↑

wp-admin

wp-admin ディレクトリには、WordPress の管理エリアを動作させるためのコードが含まれています。主なブートストラップは wp-admin/admin.php です。その他の特別なファイルとしては、admin-header.phpadmin-footer.php、AJAX ハンドラである admin-ajax.php、一般的な POST ハンドラである admin-post.php があります。wp-admin ディレクトリにあるファイルのほとんどは、WordPress の管理画面のページのためのものです。

wp-admin/includes ディレクトリは、管理エリアで使用される主要なコアおよびサードパーティライブラリで構成されています。これらの一部は、管理画面を起動するときに読み込まれます。含まれるファイルの主要なリストは wp-admin/includes/admin.php を参照してください。

Top ↑

JavaScript と CSS

wp-adminwp-includes ディレクトリには、それぞれスクリプトとスタイルのための jscss ディレクトリもあります。サードパーティのスクリプトは圧縮・軽量化された状態でパッケージ化されており、https://wordpress.org/download/source/ で入手できます。コアのスクリプトとスタイルには、圧縮・軽量化されたバージョンと開発バージョンの両方が含まれており、圧縮・軽量化されたバージョンには .min.js.min.css という接尾辞が付きます。

wp-includes ディレクトリでは、多くのサードパーティライブラリがフォルダーに格納されています。特に wp-includes/js ディレクトリには jquerytinymce ディレクトリがあり、前者には jQuery、jQuery UI、各種プラグイン、後者には TinyMCE、TinyMCE コアと WordPress 固有の拡張機能が格納されています。

wp-includes/script-loader.php ファイルは、バンドルされているすべてのスクリプトとスタイルを登録します。各スクリプトとスタイルには日付にもとづくバージョン番号 (yyyymmdd) が与えられ、スタイルシートが変更されたときにコミッターによってバージョンアップされます。バージョン番号は URL に追加され、ブラウザのキャッシュをクリアして新しい CSS や JavaScript を強制的に読み込むようにします。

Top ↑

コード履歴の検索と閲覧

コードベースを検索するために、開発者はコードエディターや IDE のプロジェクト検索ツール、または ackgrep のようなコマンドラインユーティリティを使用します。Trac 上でのコードベースのブラウジングは管理しやすいですが、注目すべき1つの特別な機能があります。Trac は Subversion の blame コマンドのための優れたユーザーインタフェースを備えています。

コードの行を blame することは、誰がいつその行を最後に編集したかを決定することを意味します。Trac でファイルを閲覧しているときに、右上にある Annotate リンクをクリックすると、これにアクセスできます。多くの人は、この UI について個別の svn blame コマンドよりもずっと効率的だと考えています。

コアコミッターは軽率に WordPress に変更を加えることはありませんし、既存のコードを完全に理解せずにコミットを行うべきではありません。もしそのコードがバグを引き起こすのであれば、それは常にそうだったのでしょうか ? いつ引き起こされたのでしょうか ? なぜでしょう ? 問題となっているコードは別のバグを修正するのでしょうか ? これらの質問は非常に重要です。

コードの履歴についてもっと知りたい方は、コードの履歴を調べるのセクションを参考にしてください。

Top ↑

インストール

WordPress のインストールを最初に実行したとき、wp-config.php ファイルが見つからない場合、wp-load.php ファイルは wp-admin/setup-config.php にアクセスして設定ファイルを作成するよう提案します。

これが完了すると、wp-admin/install.php に移動します。この時点で、データベースのテーブルが作成されます。データベーススキーマは wp-admin/includes/schema.php に、インストールされるライブラリは主に wp-admin/includes/upgrade.php に格納されます。(他のものはどこにあるのか、ここで具体的に説明する必要があります)

Top ↑

データベースのアップグレード

データベースのアップグレード方法は wp-admin/includes/upgrade.php に記載されています。データベース構造の変更でもデータベースの一部のコンテンツの更新でも、WordPress の新しいバージョンでデータベースの変更が必要なときは、いつでもアップグレードルーチンを起動できます。実際に、WordPress 0.70から最新バージョンに安全に更新でき、データベースは10年以上の変化にも対応します。

「いつ」アップグレードされるかは、wp-includes/version.php にある WordPress データベースのバージョン番号によって判断されます。この番号はコードベースのリビジョン番号に対応し、一般的には最後にデータベースのアップグレードルーチンを実行したリビジョンとなります。コード内の番号がデータベースに保存されている番号と異なる場合、wp-admin/includes/upgrade.php にあるルーチンが実行されます。

wp_upgrade() 関数 は upgrade_all() を (他の関数と一緒に) 呼び出し、適切なルーチンを順番に実行します。新しいルーチンを起動するためには、「スキーマのバージョンアップ (version.php にある、WordPress データベースのバージョンを含む正しい数値に変更する)」が必要となります。

データベース構造の変更は dbDelta() という関数によって行われます。この関数はテーブルの定義を受け取り、それを既存のスキーマと比較し、必要な変更を行います。たとえば、新しいテーブルを追加したり、フィールドを変更したり、インデックスを追加したりする場合です。コアテーブルの定義に対して dbDelta() を実行するには、version.php のデータベースバージョンを上げるだけです。

Top ↑

ファイルの更新

コア開発者は一般的に、データベースの「アップグレード」とバージョンの「更新」を区別しています。(ユーザーインタフェースを介して) WordPress を最新のコードベースに更新することは、一連の複雑なアクションを引き起こします。

更新に先立ち、WordPress は api.wordpress.org に問い合わせ、更新が必要かどうか、必要な場合は新しいバージョンをどこで入手できるかを判断しています。更新が開始されると、WordPress は ZIP アーカイブをダウンロードし、wp-content/upgrade にある一時ディレクトリに解凍されます。一つのファイルである wp-admin/includes/update-core.php が一時ディレクトリからコピーされ、既存の wp-admin/includes/update-core.php を上書きし、その時点でそれが実行されます。このように、新しくダウンロードされたコードは、新しいファイルをコピーする主要な処理を行います。これにより、どのファイルが古くて削除できるのかといった、新しいバージョンに特有の指示を出すことができます。

Top ↑

コードを調べる

これらのツールは、WordPress のコードベースを調べるときに役立つかもしれません。

原文 / 日本語訳

最終更新日: