プラグイン Version 1.x


プラグイン構造

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

custom-database-tables/
  ├─ assets/
  │  ├─ css/
  │  │  ├─ cdbt-admin.css
  │  │  ├─ cdbt-main.min.css
  │  │  └─ cdbt-style.css
  │  ├─ fonts/
  │  │  ├─ glyphicons-halflings-regular.eot
  │  │  ├─ glyphicons-halflings-regular.svg
  │  │  ├─ glyphicons-halflings-regular.ttf
  │  │  └─ glyphicons-halflings-regular.woff
  │  └─ js/
  │     ├─ plugins/
  │     │  └─ bootstrap/
  │     │     ├─ affix.js
  │     │     ├─ alert.js
  │     │     ├─ button.js
  │     │     ├─ carousel.js
  │     │     ├─ collapse.js
  │     │     ├─ dropdown.js
  │     │     ├─ modal.js
  │     │     ├─ popover.js
  │     │     ├─ scrollspy.js
  │     │     ├─ tab.js
  │     │     ├─ tooltip.js
  │     │     └─ transition.js
  │     └─ scripts.min.js
  ├─ langs/
  │  ├─ custom-database-tables.pot
  │  ├─ custom-database-tables-ja.mo
  │  └─ custom-database-tables-ja.po
  ├─ lib/
  │  ├─ cdbt.ajax.php
  │  ├─ cdbt.class.php
  │  ├─ cdbt.media.php
  │  ├─ cdbt.scripts.php
  │  └─ cdbt.shortcodes.php
  ├─ templates/
  │  ├─ cdbt-admin-controller.php
  │  ├─ cdbt-admin-create.php
  │  ├─ cdbt-admin-general.php
  │  ├─ cdbt-admin-table-creator.php
  │  ├─ cdbt-admin-tables.php
  │  ├─ cdbt-edit.php
  │  ├─ cdbt-index.php
  │  ├─ cdbt-input.php
  │  ├─ cdbt-list.php
  │  ├─ cdbt-public-edit.php
  │  ├─ cdbt-public-input.php
  │  └─ cdbt-public-list.php
  ├─ cdbt.php
  ├─ functions.php
  ├─ readme.txt
  └─ uninstall.php

lib/cdbt.ajax.php

Custom DataBase Tables(以下、CDBTと呼称します)プラグイン内のAJAX処理を司るクラスCustomDataBaseTables_Ajaxが定義されています。このクラスはプラグインのコアクラスCustomDatabaseTablesのコンストラクタにてインスタンス化されているため、コアクラスCustomDatabaseTablesを経由することで呼び出すことが可能です。
バージョン1.0.0で登録されている処理は、テーブルデータ一覧画面や編集画面でのバイナリデータ格納フィールドからのダウンロードデータリストをモーダルウィンドウへ出力する処理となっています。

lib/cdbt.class.php

CDBTプラグインのコアクラスであるCustomDatabaseTablesクラスが定義されています。登録されている処理は大きく、プラグイン本体の制御部と新規作成したテーブルに対するCRUD部に分かれます。CRUD部の各種メソッドについてはグローバル宣言されているオブジェクト変数$cdbtのメソッドとしてWordPressのテーマ等のテンプレート関数内で利用可能です。
CRUD部メソッド一覧はこちらを参照してください。

lib/cdbt.media.php

CDBTプラグイン内の各種メディアファイルダウンロード処理に利用されるAJAXクラスCustomDataBaseTables_Mediaが定義されています。このクラスもAJAXクラス同様にプラグインのコアクラスCustomDatabaseTablesのコンストラクタにてインスタンス化されているため、コアクラスCustomDatabaseTablesを経由することで呼び出すことが可能です。

lib/cdbt.scripts.php

CDBTプラグインでインクルードされるJavaScriptを動的生成するライブラリです。WordPressの管理パネルとフロントエンドとで処理が分かれています。また、テーブルクリエーターの実働部も含まれています。

lib/cdbt.shortcodes.php

CDBTプラグインで利用できるショートコード[cdbt-view][cdbt-entry][cdbt-edit]が定義されています。
ショートコードの詳細はこちらを参照してください。

templates/

CDBTプラグインで生成される各種ページのテンプレートファイルが格納されているディレクトリです。ファイル名にcdbt-public-を含まないファイルはWordPress管理パネルのCDBTプラグイン管理コンソール用のテンプレートです。cdbt-public-で始まるファイルはショートコードで生成されるHTMLコンテンツを出力するために使われます。

cdbt.php

CDBTプラグインの起点ファイルです。プラグインのメタ情報と各種定数定義、各種ライブラリの読み込みが行われます。

functions.php

CDBTプラグイン用のAPIが定義されているファイルです。APIはプラグイン内の各クラスやテンプレート等から利用されています。なお、CDBTプラグインがインストールされているWordPressサイトであれば、テーマや他のプラグインからも利用が可能です。
CDBTプラグインAPI一覧はこちらを参照してください。


メソッド

CDBTプラグインのコアライブラリであるCustomDataBaseTablesクラスのメソッドを紹介します。CustomDataBaseTablesクラスは$cdbtとしてグローバル宣言されているため、WordPressテーマのテンプレートからグローバル変数として参照することが可能です。
参照例:$cdbt->check_table_exists($table_name)

check_table_exists()

  check_table_exists($table_name=null)

テーブルが存在するか確認する

  • @param string $table_name (optional) default $this->current_table
  • @return string

truncate_table()

  truncate_table($table_name=null)

テーブルを初期化する(テーブルに含まれるデータを全て削除し、オートインクリメント型のフィールドの開始値を初期値に戻す)

  • @param string $table_name (optional) default $this->current_table
  • @return array

drop_table()

  drop_table($table_name=null)

テーブルを削除する

  • @param string $table_name (optional) default $this->current_table
  • @return array

create_table()

  create_table($table_data)

テーブルを作成する

  • @param array $table_data
  • @return array

get_table_schema()

  get_table_schema($table_name=null)

テーブル構造(スキーマ情報)を取得する

  • @param string $table_name (optional) default $this->current_table
  • @return array

get_table_comment()

  get_table_comment($table_name=null)

テーブルコメントを取得する

  • @param string $table_name (optional) default $this->current_table
  • @return array

get_create_table_sql()

  get_create_table_sql($table_name=null)

テーブル作成SQL(CREATE TABLE)文を取得する

  • @param string $table_name (optional) default $this->current_table
  • @return array

get_data()

  get_data($table_name, $columns=”*”, $conditions=null, $order=null, $limit=null, $offset=null)

テーブルから条件に該当するデータを取得する

  • @param string $table_name (must containing prefix of table)
  • @param array $columns (optional) default wildcard of ‘*’ (eq. select clause)
  • @param array $conditions (optional) (eq. where clause)
  • @param array $order (optional) default ‘order by created desc’ (eq. orderby & order clause)
  • @param int $limit (optional) (eq. limit clause)
  • @param int $offset (optional) (eq. offset clause)
  • @return array

find_data()

  find_data($table_name, $table_schema=null, $search_key, $columns, $order=null, $limit=null, $offset=null)

テーブルから条件に該当するデータを探し出す
このメソッドは、引数として与えられたテーブルスキーマから検索キーワードとして最良のフィールドを抽出して、適するデータを取得します。テーブル内の全フィールドを検索対象としないため、get_data()よりパフォーマンスが良いです。ただし、引数としてテーブルスキーマが与えられなかった場合はget_data()と同じ動作となります。

  • @param string $table_name (must containing prefix of table)
  • @param array $table_schema default null
  • @param string $search_key
  • @param array $columns (optional) default wildcard ‘*’ (eq. select clause)
  • @param array $order (optional) default ‘order by created desc’ (eq. orderby and order clause)
  • @param int $limit (optional) (eq. limit clause)
  • @param int $offset (optional) (eq. offset clause)
  • @return array

insert_data()

  insert_data($table_name, $data, $table_schema=null)

テーブルにデータを追加する

  • @param string $table_name (must containing prefix of table)
  • @param array $data
  • @param array $table_schema default null
  • @return int $insert_id

update_data()

  update_data($table_name, $ID, $data, $table_schema=null)

テーブルの指定のデータを更新する

  • @param string $table_name (must containing prefix of table)
  • @param int $ID
  • @param array $data
  • @param array $table_schema default null
  • @return int updated row (eq. ID column’s value)

delete_data()

  delete_data($table_name, $ID)

テーブル内の指定のデータを削除する

  • @param string $table_name (must containing prefix of table)
  • @param int $ID
  • @return bool

validate_data()

  validate_data($column_schema, $data)

任意のデータがカラムスキーマに準拠しているかを検証する

  • @param array $column_schema
  • @param string $data
  • @return array

validate_create_sql()

  validate_create_sql($table_name, $sql)

テーブル作成SQL(CREATE TABLE)文の検証と最適化を行う

  • @param string $table_name
  • @param string $sql (for create table)
  • @return array

validate_alter_sql()

  validate_alter_sql($table_name, $sql)

テーブル構造変更SQL(ALTER TABLE)文の検証と最適化を行う

  • @param string $table_name
  • @param string $sql (for alter table)
  • @return array

compare_reservation_tables()

  compare_reservation_tables($table_name)

WordPressの予約テーブルとテーブル名を比較する

  • @param string $table_name
  • @return boolean

import_table()

  import_table($table_name, $import_data)

指定のテーブルからデータをインポートする

  • @param string $table_name
  • @param array $import_data
  • @return array

export_table()

  export_table($table_name, $index_only=false)

指定のテーブルにデータをエクスポートする

  • @param string $table_name
  • @param boolean $index_only (optional) default false
  • @return array

API

cdbt_create_pagination()

  cdbt_create_pagination($page_num, $per_page, $total_data, $mode=’list’)

ページネーションHTMLを生成して出力します

  • @param int $page_num
  • @param int $per_page
  • @param int $total_data
  • @param string $mode (optional) default ‘list’
  • @return string

cdbt_current_user_level()

  cdbt_current_user_level()

現在ログイン中のユーザーの権限レベル(0~9)を取得します

  • @return int

cdbt_check_current_table_role()

  cdbt_check_current_table_role($mode, $table=null)

現在ログイン中のユーザーが指定されたテーブルにアクセスできる権限があるかを調べます

  • @param string $mode
  • @param string $table (optional) default null
  • @return boolean

cdbt_check_current_table_valid()

  cdbt_check_current_table_valid($table_name=null)

指定のテーブルが有効かどうかを調べます

  • @param string $table_name (optional) default null
  • @return boolean

cdbt_get_options_table()

  cdbt_get_options_table($table_name=null)

指定のテーブルのオプション設定内容をすべて取得します

  • @param string $table_name (optional) default null
  • @return array|boolean

cdbt_create_console_menu()

  cdbt_create_console_menu($nonce)

ヘッダー用のコンソールメニュー欄を出力します

  • @param string $nonce
  • @return void

cdbt_create_console_footer()

  cdbt_create_console_footer($message=null, $run=false, $run_label=null, $hidden_callback=null)

フッター用のコンソールボタンとモーダルウィンドウ用の定義を出力します

  • @param string $message default null
  • @param boolean $run default false
  • @param string $run_label default null
  • @param string $hidden_callback default null
  • @return void

cdbt_create_form()

  cdbt_create_form($table_name, $column_name, $column_schema, $value, $option=null)

テーブルのフィールド構造(カラム形式)を基にして入力フォーム(HTML)を自動生成する

  • @param string $table_name (must containing prefix of table)
  • @param string $culumn_name
  • @param array $culumn_schema
  • @param string $value
  • @param string $option (optional) be hidden form
  • @return string (eq. html document)

cdbt_create_button()

  cdbt_create_button($btn_type=’button’, $btn_value, $btn_id=null, $btn_class=’default’, $btn_action=null, $prefix_icon=null)

TwitterBootstrap3準拠スタイルのボタンオブジェクト(HTML)を生成する

  • @param string $btn_type default ‘button’
  • @param string|array $btn_value (If $btn_type is “stateful”, second arg in array is used for string that will change after clicked button.)
  • @param string $btn_id (optional) (eq. id attribute value in button tag)
  • @param string $btn_class (optional) default ‘default’ (eq. class attribute value of “btn-*” in button tag)
  • @param string $btn_action (optional) (eq. data-action attribute value in button tag)
  • @param string $prefix_icon (optional) (eq. value of “glyphicon-*” of the bootstrap)
  • @return string (eq. html document)

cdbt_str_truncate()

  cdbt_str_truncate($string, $length=40, $suffix=’…’, $collapse=false)

指定した文字数で切捨てられた文字列を取得する

  • @param string $string
  • @param int $length default 40
  • @param string $suffix (optional) default ‘…’
  • @param boolean $collapse (optional) default false
  • @return string

cdbt_compare_var()

  cdbt_compare_var($var, $compare=null)

与えられた二つの変数を比較する

  • @param mixed(string|int|boolean) $var
  • @param mixed(string|int|boolean) $compare
  • @return boolean

cdbt_get_boolean()

  cdbt_get_boolean($string)

与えられた文字列の真偽値(ブーリアン値)を取得する(boolval()の代替関数)

  • @param string $string
  • @return boolean

cdbt__()

  cdbt__($string)

翻訳ファイルにて翻訳された文字列を取得する

  • @param string $string
  • @return string

cdbt_e()

  cdbt_e($string)

翻訳ファイルにて翻訳された文字列を出力する

  • @param string $string
  • @return void

ショートコード

[cdbt-view]

  [cdbt-view table="${table_name}"]

指定したテーブルのデータ一覧HTMLを出力する

  • @attribute string table
  • @attribute boolean bootstrap_style
  • @attribute boolean display_title
  • @attribute boolean display_search
  • @attribute boolean display_list_num
  • @attribute string exclude_cols (a column name or Comma-separated columns name)
  • @attribute string add_class

[cdbt-entry]

  [cdbt-entry table="${table_name}"]

指定したテーブルのデータ登録用フォームHTMLを出力する

  • @attribute string table
  • @attribute boolean bootstrap_style
  • @attribute boolean display_title
  • @attribute string hidden_cols (a column name or Comma-separated columns name)
  • @attribute string add_class

[cdbt-edit]

  [cdbt-edit table="${table_name}" entry_page="${postID|postName}"]

指定したテーブルのデータ編集用HTMLを出力する

  • @attribute string table
  • @attribute int|string entry_page (integer of post ID or strings of post name)
  • @attribute boolean bootstrap_style
  • @attribute boolean display_title
  • @attribute boolean display_list_num
  • @attribute string exclude_cols (a column name or Comma-separated columns name)
  • @attribute string add_class

APPENDIX

目次

About the Author

ka2

ka2

WEBフロントエンドエンジニア。元々コンシューマゲーム機のチェッカーで、ゲーム好き。WEB業界はWEBデザイナーとして出発し、いまではクラウド系インフラ構築から、アプリケーション開発までおよそWEB関連開発ならよろず屋的にこなしてます。最近は、AWS SDK for PHP v3を弄びつつ、CodeIgniterとd3.jsが気になる日々。
  • follow us in feedly