WordPress のコードベース
Topics
WordPress は、Subversion という集中型バージョン管理システムで管理されています。このリポジトリのミラーは、分散型 VCS である Git を介して利用できます。
WordPress のコードベースには、Subversion、Git、Trac (バグトラッカー)、直接のダウンロードなど、さまざまな方法でアクセスできます。
- Subversion: リポジトリは https://develop.svn.wordpress.org/ にあります。メインの開発ブランチ (trunk と呼ばれます) は https://develop.svn.wordpress.org/trunk にあります。
- Git: リポジトリは
git://develop.git.wordpress.org/
にあります。また、Github 上の WordPress リポジトリのミラーもあります。GitHub でのプルリクエストは歓迎されますが、プルリクエストが他の貢献者に確実に見えるように、GitHub によるコードレビューガイドに従ってください。 - Trac: リポジトリは https://core.trac.wordpress.org/browser/ でブラウザから見ることができます。変更点のログは https://core.trac.wordpress.org/log/ で見ることができます。
- ダウンロード: WordPress の最新安定版は、https://wordpress.org/latest.zip でダウンロードできます。最新のナイトリービルド (2300 GMT) は、https://wordpress.org/nightly-builds/wordpress-latest.zip で確認できます。
WordPress コードの構成
上記の Git または Subversion のいずれかのリポジトリを使用している場合、コアのコードベースは前述の通り src
ディレクトリにあります。ダウンロードされるパッケージはこのディレクトリの「ビルド」バージョンを提供し、そのためこれらのファイルはルートに配置されます。コードベースは、約1000のファイルやディレクトリから構成されています。
index.php
、wp-load.php
、wp-blog-header.php
、wp-settings.php
などの初期起動のためのファイルは、この src
ディレクトリに配置されます。XML-RPC、トラックバック、コメント投稿のエンドポイントなどの特別なハンドラもルートにあります。
残りのファイルは、3つの異なるディレクトリに分けられています。wp-admin、wp-includes、そして wp-content です。
wp-content
wp-content ディレクトリは、テーマ、プラグイン、アップロードなど、ユーザー定義のファイルやサイト固有のファイルで構成されています。リポジトリには、バンドルされているプラグイン (例: Hello Dolly) とテーマ (例: Twenty Fifteen) 用の wp-content ディレクトリしかありません。
wp-includes
wp-includes ディレクトリは、WordPress の主要なコアとサードパーティライブラリで構成されています。これらのファイルの多くは、アプリケーションを起動する際に読み込まれます。
wp-includes に含まれるファイルは、(ほぼ) 標準的な接頭辞と接尾辞のセットで扱われます。
class-*.php
– PHP クラス。一部、外部ライブラリもあります。ms-*.php
– WordPress のマルチサイト機能に特化したコードです。default-*.php
– デフォルトの機能を実装または定義するコード。すなわち定数、ウィジェット、およびフィルターです。*deprecated.php
– 非推奨となった機能です。*-template.php
– 関連する API のテンプレート機能です。
wp-admin/includes にあるファイルも、同様の命名規則に従っています。
wp-admin
wp-admin ディレクトリには、WordPress の管理エリアを動作させるためのコードが含まれています。主なブートストラップは wp-admin/admin.php
です。その他の特別なファイルとしては、admin-header.php
と admin-footer.php
、AJAX ハンドラである admin-ajax.php
、一般的な POST ハンドラである admin-post.php
があります。wp-admin ディレクトリにあるファイルのほとんどは、WordPress の管理画面のページのためのものです。
wp-admin/includes ディレクトリは、管理エリアで使用される主要なコアおよびサードパーティライブラリで構成されています。これらの一部は、管理画面を起動するときに読み込まれます。含まれるファイルの主要なリストは wp-admin/includes/admin.php
を参照してください。
JavaScript と CSS
wp-admin と wp-includes ディレクトリには、それぞれスクリプトとスタイルのための js と css ディレクトリもあります。サードパーティのスクリプトは圧縮・軽量化された状態でパッケージ化されており、https://wordpress.org/download/source/ で入手できます。コアのスクリプトとスタイルには、圧縮・軽量化されたバージョンと開発バージョンの両方が含まれており、圧縮・軽量化されたバージョンには .min.js
と .min.css
という接尾辞が付きます。
wp-includes ディレクトリでは、多くのサードパーティライブラリがフォルダーに格納されています。特に wp-includes/js ディレクトリには jquery と tinymce ディレクトリがあり、前者には jQuery、jQuery UI、各種プラグイン、後者には TinyMCE、TinyMCE コアと WordPress 固有の拡張機能が格納されています。
wp-includes/script-loader.php
ファイルは、バンドルされているすべてのスクリプトとスタイルを登録します。各スクリプトとスタイルには日付にもとづくバージョン番号 (yyyymmdd) が与えられ、スタイルシートが変更されたときにコミッターによってバージョンアップされます。バージョン番号は URL に追加され、ブラウザのキャッシュをクリアして新しい CSS や JavaScript を強制的に読み込むようにします。
コード履歴の検索と閲覧
コードベースを検索するために、開発者はコードエディターや IDE のプロジェクト検索ツール、または ack や grep のようなコマンドラインユーティリティを使用します。Trac 上でのコードベースのブラウジングは管理しやすいですが、注目すべき1つの特別な機能があります。Trac は Subversion の blame コマンドのための優れたユーザーインタフェースを備えています。
コードの行を blame することは、誰がいつその行を最後に編集したかを決定することを意味します。Trac でファイルを閲覧しているときに、右上にある Annotate リンクをクリックすると、これにアクセスできます。多くの人は、この UI について個別の svn blame コマンドよりもずっと効率的だと考えています。
コアコミッターは軽率に WordPress に変更を加えることはありませんし、既存のコードを完全に理解せずにコミットを行うべきではありません。もしそのコードがバグを引き起こすのであれば、それは常にそうだったのでしょうか ? いつ引き起こされたのでしょうか ? なぜでしょう ? 問題となっているコードは別のバグを修正するのでしょうか ? これらの質問は非常に重要です。
インストール
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
に格納されます。(他のものはどこにあるのか、ここで具体的に説明する必要があります)
データベースのアップグレード
データベースのアップグレード方法は 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
のデータベースバージョンを上げるだけです。
ファイルの更新
コア開発者は一般的に、データベースの「アップグレード」とバージョンの「更新」を区別しています。(ユーザーインタフェースを介して) WordPress を最新のコードベースに更新することは、一連の複雑なアクションを引き起こします。
更新に先立ち、WordPress は api.wordpress.org に問い合わせ、更新が必要かどうか、必要な場合は新しいバージョンをどこで入手できるかを判断しています。更新が開始されると、WordPress は ZIP アーカイブをダウンロードし、wp-content/upgrade にある一時ディレクトリに解凍されます。一つのファイルである wp-admin/includes/update-core.php
が一時ディレクトリからコピーされ、既存の wp-admin/includes/update-core.php
を上書きし、その時点でそれが実行されます。このように、新しくダウンロードされたコードは、新しいファイルをコピーする主要な処理を行います。これにより、どのファイルが古くて削除できるのかといった、新しいバージョンに特有の指示を出すことができます。
コードを調べる
これらのツールは、WordPress のコードベースを調べるときに役立つかもしれません。
- The Official WordPress Code Reference
- QueryPosts.com
- Westi’s PHPXref
- The Git mirror, mirrored to GitHub
最終更新日: