プラグインの構造 ─ Structure

構成ファイルとディレクトリ構造

Custom DataBase Tables Version 2.x(以下、CDBT V2と称します)プラグインの構成ファイルとディレクトリ構造は下記のようになっています。

custom-database-tables/
  ├─ assets/
  │  ├─ fonts/
  │  │  ├─ fontawesome-webfont.eot
  │  │  ├─ fontawesome-webfont.svg
  │  │  ├─ fontawesome-webfont.ttf
  │  │  ├─ fontawesome-webfont.woff
  │  │  ├─ fontawesome-webfont.woff2
  │  │  ├─ fuelux.eot
  │  │  ├─ fuelux.svg
  │  │  ├─ fuelux.ttf
  │  │  ├─ fuelux.woff
  │  │  ├─ glyphicons-halflings-regular.eot
  │  │  ├─ glyphicons-halflings-regular.svg
  │  │  ├─ glyphicons-halflings-regular.ttf
  │  │  ├─ glyphicons-halflings-regular.woff
  │  │  └─ glyphicons-halflings-regular.woff2
  │  ├─ images/
  │  │  ├─ cdbt_v2_image_1.png
  │  │  ├─ cdbt_v2_image_2.png
  │  │  ├─ cdbt_v2_image_3.png
  │  │  ├─ cdbt_v2_image_4.png
  │  │  ├─ cdbt_v2_image_5.png
  │  │  ├─ cdbt_v2_image_6.png
  │  │  ├─ cdbt_v2_image_7.png
  │  │  ├─ cdbt-icon.svg
  │  │  ├─ cdbt-icon-db.svg
  │  │  ├─ cdbt-icon-db-leaf.svg
  │  │  ├─ cdbt-icon-v1.svg
  │  │  ├─ cdbt-logo.svg
  │  │  ├─ cdbt-noimage.png
  │  │  ├─ cdbt-noimage_reversal.png
  │  │  └─ database-table.png
  │  ├─ scripts/
  │  │  ├─ bootstrap.js
  │  │  ├─ cdbt-admin.js
  │  │  ├─ cdbt-main.js
  │  │  ├─ cdbt-table-creator.js
  │  │  ├─ clipboard.js
  │  │  ├─ fuelux.js
  │  │  ├─ jquery.js
  │  │  ├─ jquery.kinetic.js
  │  │  └─ underscore.js
  │  └─ styles/
  │     ├─ cdbt-admin.css
  │     ├─ cdbt-main.css
  │     ├─ cdbt-table-creator.css
  │     └─ fuelux.css
  ├─ backup/
  ├─ langs/
  │  ├─ custom-database-tables.pot
  │  ├─ custom-database-tables-ja.mo
  │  └─ custom-database-tables-ja.po
  ├─ lib/
  │  ├─ shortcodes/
  │  │  ├─ cdbt-edit.php
  │  │  ├─ cdbt-entry.php
  │  │  ├─ cdbt-submit.php
  │  │  └─ cdbt-view.php
  │  ├─ admin.php
  │  ├─ ajax.php
  │  ├─ config.php
  │  ├─ core.php
  │  ├─ db.php
  │  ├─ extras.php
  │  ├─ index.php
  │  ├─ init.php
  │  ├─ main.php
  │  ├─ shortcodes.php
  │  ├─ tmpl.php
  │  ├─ utils.php
  │  ├─ validate.php
  │  └─ webapis.php
  ├─ templates/
  │  ├─ admin/
  │  │  ├─ cdbt_management_console.php
  │  │  ├─ cdbt_options.php
  │  │  ├─ cdbt_shortcodes.php
  │  │  ├─ cdbt_tables.php
  │  │  ├─ cdbt_web_apis.php
  │  │  └─ index.php
  │  ├─ components/
  │  │  ├─ cdbt_forms.php
  │  │  ├─ cdbt_modal.php
  │  │  ├─ cdbt_repeater.php
  │  │  ├─ cdbt_table.php
  │  │  ├─ cdbt_table_creator.php
  │  │  ├─ cdbt_wizard.php
  │  │  └─ index.php
  │  └─ index.php
  ├─ cdbt.php
  ├─ debug.log
  ├─ functions.php
  ├─ index.php
  ├─ readme.txt
  └─ uninstall.php

assets/scripts/

CDBTプラグインのJavaScript群が格納されているディレクトリ。すべてのJavaScriptはMinify化されて最適化されています。

assets/styles/

CDBTプラグインのスタイルシート群が格納されているディレクトリ。すべてのCSSファイルはsass/lessソースのコンパイル済みで、Minify化等の最適化がされています。

backup/

デバッグログのバックアップ用ディレクトリ。プラグインにてデバッグモードを有効化し、デバッグログの切り回しを実行した際に自動生成されます。

lib/admin.php

CDBTプラグイン内の管理画面関連のすべての処理を司るファイナル・クラスCdbtAdminが定義されています。名前空間CustomDataBaseTables\Libに属します。
このクラスはプラグインのコアクラスから派生する管理画面で必要なサブクラスをすべて継承し、ファクトリー・メソッドにてインスタンス化されます。インスタンスはグローバル変数$cdbtに格納されるため、プラグインが有効化している状態であればテーマを含めたWordPressサイト全域から呼び出すことが可能です。

lib/ajax.php

CDBTプラグイン内のAJAX処理を司るトレイトCdbtAjaxが定義されています。名前空間CustomDataBaseTables\Libに属します。
このトレイトはプラグインの各ファイナル・クラスでuseされます。

lib/config.php

CDBTプラグイン内の各種設定値を定義・初期化するサブクラスCdbtConfigが定義されています。名前空間CustomDataBaseTables\Libに属し、プラグインのコアクラスであるCdbtCoreから継承します。
このクラスでは、主にプラグインのオプション設定のスキーマ定義と初期化、オプションのアップグレード等を行います。また、オプション設定を制御するための各種メソッドも定義されています。

lib/core.php

CDBTプラグインのコアクラスであるCdbtCoreクラスが定義されています。名前空間CustomDataBaseTables\Libに属し、ユーティリティ・クラスCdbtUtilityから継承します。
プラグイン本体の制御と、メンバーの初期化等を行います。

lib/db.php

CDBTプラグイン内のMySQL制御部(CRUD)を司るサブクラスCdbtDBが定義されています。名前空間CustomDataBaseTables\Libに属し、サブクラスCdbtConfigから継承します。
プラグイン内のすべてのデータベース制御を受け持ち、いくつかのメソッドではWordPressのグローバル・オブジェクト$wpdbをラップします。このクラスを介して利用できるメソッドについての詳しい説明はメソッド一覧を参照してください。

lib/extras.php

CDBTプラグインにビルトインされている処理系専用の拡張を行うトレイトCdbtExtrasが定義されています。名前空間CustomDataBaseTables\Libに属します。
必要に応じて各種ファイナル・クラスでuseされます。

lib/init.php

CDBTプラグインでのインスタンス・ファクトリー関数が定義されています。名前空間CustomDataBaseTables\Libに属します。
クラスのインスタンス化とグローバル・オブジェクトへの定義を行うディスパッチャ・ファイルです。

lib/main.php

CDBTプラグイン内のフロントエンド側のすべての処理を司るファイナル・クラスCdbtFrontendが定義されています。名前空間CustomDataBaseTables\Libに属します。
このクラスはプラグインのコアクラスから派生するWEBフロントエンドで必要なサブクラスをすべて継承し、ファクトリー・メソッドにてインスタンス化されます。インスタンスはグローバル変数$cdbtに格納されるため、プラグインが有効化している状態であればテーマを含めたWordPressサイト全域から呼び出すことが可能です。

lib/shortcodes.php

CDBTプラグインで使用可能なショートコードの定義・制御を行うトレイトCdbtShortcodesが定義されています。名前空間CustomDataBaseTables\Libに属します。バージョン2.1.31からは各ショートコードの実体定義部のメソッドがそれぞれ子トレイトとして分割されました。子トレイトはlib/shortcodes/に格納されており、当トレイトからuseされます。
このトレイトは各種ファイナル・クラスによってuseされます。

lib/tmpl.php

CDBTプラグインで利用する各種テンプレートを読み込むためのトレイトDynamicTemplateが定義されています。名前空間CustomDataBaseTables\Libに属します。
このトレイトは各種ファイナル・クラスによってuseされます。

lib/utils.php

CDBTプラグインの基底クラスCdbtUtilityが定義されています。名前空間CustomDataBaseTables\Libに属します。
このクラスはCDBTプラグインの主要機能からは独立したユーティリティ・クラスであり、コンストラクタによる単独インスタンス化が可能となっています。

lib/validate.php

各種値検証用の独立したクラスCommonValidatorと、その派生クラスCdbtValidatorが定義されています。名前空間CustomDataBaseTables\Libに属します。
バリデータ・クラスは各ファイナル・メソッドにてメンバー・オブジェクトとしてインクルードされます。

lib/webapis.php

CDBTプラグインのWebAPI機能を定義・制御するためのトレイトCdbtApisが定義されています。名前空間CustomDataBaseTables\Libに属します。
このトレイトは各種ファイナル・クラスによってuseされます。

templates/admin/

CDBTプラグインのすべての管理画面のテンプレートファイルが格納されているディレクトリです。
トレイトDynamicTemplateによって読み込まれ、各管理画面の出力に使われます。

templates/components/

CDBTプラグインの各種コンポーネント用のテンプレートファイルが格納されているディレクトリです。
トレイトDynamicTemplateによって読み込まれ、ショートコードや管理画面内のコンテンツの生成に使われます。

cdbt.php

CDBTプラグインのエントリポイントとなるプラグイン・メインファイルです。
プラグインの実体としてのメタ情報と各種定数定義を行い、動作環境チェック、各ライブラリの読み込みとクラスの起動も行われます。

debug.log

CDBTプラグイン内のオプション設定にてデバッグモードを有効にした場合に、デバッグログが出力されるログファイルです。
オプションの設定時に自動生成されるため、初期インストール時には存在しません。

functions.php

CDBTプラグインのライブラリ・ローダーです。

クラス構造

CDBTプラグインにおけるクラスの継承構造は下記の通りです。

管理画面:
  └─ utils.php ( class: CdbtUtility )
     └─ core.php ( class: CdbtCore )
        └─ config.php ( class: CdbtConfig )
           └─ db.php ( class: CdbtDB )
              └─ admin.php ( class: CdbtAdmin )
                 │  ├─ ajax.php ( trait: CdbtAjax )
                 │  ├─ tmpl.php ( trait: DynamicTemplate )
                 │  ├─ shortcodes.php ( trait: CdbtShortcodes )
                 │  ├─ webapis.php ( trait: CdbtApis )
                 │  └─ extras.php ( trait: CdbtExtras )
                 └─ validate.php ( class: CdbtValidator )

フロントエンド:
  └─ utils.php ( class: CdbtUtility )
     └─ core.php ( class: CdbtCore )
        └─ config.php ( class: CdbtConfig )
           └─ db.php ( class: CdbtDB )
              └─ main.php ( class: CdbtFrontend )
                 │  ├─ ajax.php ( trait: CdbtAjax )
                 │  ├─ tmpl.php ( trait: DynamicTemplate )
                 │  ├─ shortcodes.php ( trait: CdbtShortcodes )
                 │  ├─ webapis.php ( trait: CdbtApis )
                 │  └─ extras.php ( trait: CdbtExtras )
                 └─ validate.php ( class: CdbtValidator )