check_column() は、指定のテーブルにおいて特定のカラム(列)が存在し、さらに型、NULL許容、キー設定、デフォルト値、その他(EXTRA属性)が条件と一致するかを確認する関数です。
テーブル構造の整合性チェックやアップグレード処理の前検証に役立ちます。内部的には DESC テーブル名 で得られるカラム情報を比較しています。
目次
基本構文
check_column(
string $table_name,
string $col_name,
string $col_type,
bool|null $is_null = null,
mixed $key = null,
mixed $default_value = null,
mixed $extra = null
): boolDESC テーブル名 を実行し、返されるカラム一覧の中から該当カラムを照合。条件がすべて一致すれば true、一致しなければ false を返します。
引き数と戻り値
スクロールできます
| 引数 | 型 | 説明 |
|---|---|---|
$table_name | string | テーブル名(例:wp_posts) |
$col_name | string | 検証対象のカラム名 |
$col_type | string | 期待するカラム型(例:varchar(255)) |
$is_null | bool | null` |
$key | mixed | キー情報(例:PRI, UNI, MUL) |
$default_value | mixed | デフォルト値 |
$extra | mixed | カラムの追加設定(例:auto_increment) |
スクロールできます
| 戻り値 | 型 | 説明 |
|---|---|---|
true | bool | 指定されたテーブルにカラムが存在する場合に返されます。 |
false | bool | カラムが存在しない場合に返されます。 |
使用例
タグを使った使用例
global $wpdb;
if ( check_column(
$wpdb->prefix . 'my_table',
'status',
'varchar(20)',
false,
'PRI',
'active',
null
) ) {
echo 'status 列は正しく定義されています';
} else {
echo 'status 列が未定義または不一致です';
}wp_my_table に status カラムが存在し、型・NULL・キー・デフォルトが想定通りならば true を返します。
注意点
- テーブル名はプレフィックス付き(例:
$wpdb->prefix)で指定すること。 - カラム属性は完全一致で比較されるため、小文字・大文字やスペースの違いに注意。
- デフォルトでは、NULLやキーなどチェックしない項目は
nullを渡すことでスキップできます。
良く一緒に使われる関数
wpdb::get_results()
テーブルのカラム情報を取得するために使用。
maybe_add_column()
存在しない場合にカラムを自動で追加するための補助関数。
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
maybe_add_column( $table_name, 'new_col', "ALTER TABLE $table_name ADD new_col INT NOT NULL DEFAULT 0;" );ALTER TABLE ... ADD COLUMN
maybe_add_column() 内部で利用されるSQL文として活用。
$wpdb->query( "ALTER TABLE $table_name ADD new_col varchar(255) NOT NULL" );想定されるトラブル
カラムが存在しないと判定される
異なるテーブル名やプレフィックスを渡している。
解決方法
$wpdb->prefixを使って正しいテーブル名を指定- 型やNULL許容など、引数の記述に誤りがないか確認(例:
VARCHAR(255)vsvarchar(255))
条件が合っているはずなのに false が返る
MySQLの DESC が返す型文字列とあなたの $col_type が微妙に異なる可能性あり。
解決方法
DESC テーブル名を手動で確認し、返される文字列に合わせる- null 可否などの引数を
nullにして必要最小限だけ比較する
Q&A
まとめ
check_column() は、WordPressのテーブル・カラム構造が仕様通りかどうかを確認するための便利な関数です。
特にプラグインのインストールやアップグレード時に、データベース構造の整合性を保証するための前処理として活用できます。カスタムテーブルを扱う際には非常に有用なツールの一つです。
コメント