Если при активации плагина нужно импортировать данные, я бы хранил их не в виде SQL-дампа, а в XML или JSON. Тогда при импорте не нужно будет беспокоиться о префиксе таблиц.
Перед активацией стоит проверять существование данных в базе, чтобы не импортировать их повторно.
c префиксами таблиц в принципе через str_replace() нормально вышло, а вот проверка врчему то всегда дает ошибку синтаксиса,
причем пробовал по разному:
— и как в кодексе советуют — SHOW TABLES LIKE $table
— и так SELECT * FROM $table WHERE 0
а таблица при sql файле создаваться все равно не будет ибо IF NOT EXISTS
сам плагин пока в альфе лежит тут
https://github.com/WP-Panda/cr_regions_ip
UPD: попробовал JSON — 2,5 мб получается база
XML — почти 10 мб
a sql — 1.5мб так, что преимуществ не сильно видно.
проверка врчему то всегда дает ошибку синтаксиса
У меня такая проверка работает:
if ( ! $wpdb->get_var( "SHOW TABLES LIKE '{$table}'" ) ) {
$charset_collate = '';
if ( ! empty( $wpdb->charset ) ) {
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
}
if ( ! empty( $wpdb->collate ) ) {
$charset_collate .= " COLLATE $wpdb->collate";
}
$wpdb->query(
"CREATE TABLE {$table} (
...
) $charset_collate"
);
}
так, что преимуществ не сильно видно
При замене префикса в дампе есть риск затронуть данные. Впрочем, если заранее известно, что в самих данных ничего похожего не встречается, то и этот вариант имеет право на существование.
а где можно почитать о API wpdb{}
ибо ни о charset ни о сollate в кодексе не нашел
вопрос снят, нагуглил http://www.tig12.net/downloads/apidocs/wp/wp-includes/wpdb.class.html