函数原型
maybe_convert_table_to_utf8mb4( string $table ): bool
函数描述
If a table only contains utf8 or utf8mb4 columns, convert it to utf8mb4.
是否弃用
未弃用
函数参数
-
$table
string
Required - The table to convert.
函数返回值
bool True if the table was converted, false if it wasn’t.
函数位置
File: wp-admin/includes/upgrade.php.
函数源码
function maybe_convert_table_to_utf8mb4( $table ) {
global $wpdb;
$results = $wpdb->get_results( "SHOW FULL COLUMNS FROM `$table`" );
if ( ! $results ) {
return false;
}
foreach ( $results as $column ) {
if ( $column->Collation ) {
list( $charset ) = explode( '_', $column->Collation );
$charset = strtolower( $charset );
if ( 'utf8' !== $charset && 'utf8mb4' !== $charset ) {
// Don't upgrade tables that have non-utf8 columns.
return false;
}
}
}
$table_details = $wpdb->get_row( "SHOW TABLE STATUS LIKE '$table'" );
if ( ! $table_details ) {
return false;
}
list( $table_charset ) = explode( '_', $table_details->Collation );
$table_charset = strtolower( $table_charset );
if ( 'utf8mb4' === $table_charset ) {
return true;
}
return $wpdb->query( "ALTER TABLE $table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" );
}
源码链接
变更日志
| Version | Description |
|---|---|
| 4.2.0 | Introduced. |

