maybe_convert_table_to_utf8mb4() WordPress Function

The maybe_convert_table_to_utf8mb4() function is used to convert a table to the UTF-8 character set and collation. This function is only needed if you are using a version of MySQL earlier than 5.5.3, or if you are using a version of WordPress earlier than 4.2.0.

maybe_convert_table_to_utf8mb4( string $table ) #

If a table only contains utf8 or utf8mb4 columns, convert it to utf8mb4.


Parameters

$table

(string)(Required)The table to convert.


Top ↑

Return

(bool) True if the table was converted, false if it wasn't.


Top ↑

Source

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" );
}


Top ↑

Changelog

Changelog
VersionDescription
4.2.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.