wpdb::tables()publicWP 3.0.0

Returns an array of WordPress tables.

Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to override the WordPress users and usermeta tables that would otherwise be determined by the prefix.

The $scope argument can take one of the following:

  • 'all' - returns 'all' and 'global' tables. No old tables are returned.
  • 'blog' - returns the blog-level tables for the queried blog.
  • 'global' - returns the global tables for the installation, returning multisite tables only on multisite.
  • 'ms_global' - returns the multisite global tables, regardless if current installation is multisite.
  • 'old' - returns tables which are deprecated.

Метод класса: wpdb{}

Хуков нет.

Возвращает

Строку[]. Table names. When a prefix is requested, the key is the unprefixed table name.

Использование

global $wpdb;
$wpdb->tables( $scope, $prefix, $blog_id );
$scope(строка)
Possible values include 'all', 'global', 'ms_global', 'blog', or 'old' tables.
По умолчанию: 'all'
$prefix(true|false)
Whether to include table prefixes. If blog prefix is requested, then the custom users and usermeta tables will be mapped.
По умолчанию: true
$blog_id(int)
The blog_id to prefix. Used only when prefix is requested.
По умолчанию: wpdb::$blogid

Список изменений

С версии 3.0.0 Введена.
С версии 6.1.0 old now includes deprecated multisite global tables only on multisite.

Код wpdb::tables() WP 6.5.2

public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) {
	switch ( $scope ) {
		case 'all':
			$tables = array_merge( $this->global_tables, $this->tables );
			if ( is_multisite() ) {
				$tables = array_merge( $tables, $this->ms_global_tables );
			}
			break;
		case 'blog':
			$tables = $this->tables;
			break;
		case 'global':
			$tables = $this->global_tables;
			if ( is_multisite() ) {
				$tables = array_merge( $tables, $this->ms_global_tables );
			}
			break;
		case 'ms_global':
			$tables = $this->ms_global_tables;
			break;
		case 'old':
			$tables = $this->old_tables;
			if ( is_multisite() ) {
				$tables = array_merge( $tables, $this->old_ms_global_tables );
			}
			break;
		default:
			return array();
	}

	if ( $prefix ) {
		if ( ! $blog_id ) {
			$blog_id = $this->blogid;
		}
		$blog_prefix   = $this->get_blog_prefix( $blog_id );
		$base_prefix   = $this->base_prefix;
		$global_tables = array_merge( $this->global_tables, $this->ms_global_tables );
		foreach ( $tables as $k => $table ) {
			if ( in_array( $table, $global_tables, true ) ) {
				$tables[ $table ] = $base_prefix . $table;
			} else {
				$tables[ $table ] = $blog_prefix . $table;
			}
			unset( $tables[ $k ] );
		}

		if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) ) {
			$tables['users'] = CUSTOM_USER_TABLE;
		}

		if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) ) {
			$tables['usermeta'] = CUSTOM_USER_META_TABLE;
		}
	}

	return $tables;
}