Intereting Posts
Как легко проверить, сохранен ли текущий идентификатор страницы в настройке настройки Расширение плагина AZIndex для использования пользовательских типов сообщений и пользовательских таксономий как показать содержимое сообщения с именем сообщения в боковой панели? Как использовать таможенный налог для типа сообщения Как сохранить заголовок изображения при изменении темы Использование функции WordPress selected () Add_meta_box не отображается, но отображается в параметрах экрана ECHO исполняет 4 раза в голове Проблемы с загрузкой Jquery на веб-сайте WordPress Имя Ввод от виджета отображает имя боковой панели вместо сохраненных данных Показать название таксономии Сохранить дату последнего входа в глобальную область до изменения? Как я могу вызвать функцию плагина из пользовательского шаблона? Как создать различные шаблоны для разных страниц в WordPress wp_dropdown_pages в форме виджетов

Отдельный БД по ежегодному архиву WordPress

У меня есть большая БД из сообщения в блоге, которую я уже экспортировал в год, и хотел сделать архив по году, делая это на субдомене, например, 2012.mysite.com Я 2012.mysite.com поисках решения в Интернете, мне интересно, если кто-то сделал это раньше? и может посоветовать мне хорошее решение, все, что я хотел, это отделить до другого db в год для архивирования.

У меня есть знания в PHP и MYSQL.

В последнее время мне это нужно для клиента (он хотел сделать то же самое, но мог бы создать архив сам в backend) и не смог найти для него хороший плагин. На самом деле это довольно просто настроить. Вам просто нужно сделать установку сетевой установки, а затем поместить в папку wp-content пользовательскую install.php чтобы переопределить функцию wp_install_defaults () . В этой функции вам просто нужно написать несколько операторов SQL, которые перемещаются по содержимому с одного сайта на другой.

В итоге единственное, что мне нужно было сделать, это создать этот пользовательский install.php (возможно, вам придется изменить его в соответствии с вашими потребностями, но я думаю, что это хорошая отправная точка) :

 <?php function wp_install_defaults($user_id) { global $wpdb, $table_prefix; // we'll truncate the options table later on, these are the options we want to keep, therefor we fetch them here. $options = array('siteurl', 'blogname', 'blog_description', 'home'); $options = dlx_archive::getOptions($options, $table_prefix); $wpdb->query("TRUNCATE {$table_prefix}options"); // also alter the term table (plugin install will hook later, but we can't transfer now if the table scheme isn't synced). $wpdb->query("ALTER TABLE {$table_prefix}terms ADD `avhec_term_order` INT( 4 ) NULL DEFAULT '0'"); $tables = array( 'terms', 'term_taxonomy', 'term_relationships', 'posts', 'postmeta', 'avhec_category_groups', 'options' ); // this will sync the data between main blog and archive. dlx_archive::copyData($tables, $wpdb->base_prefix , $table_prefix); // write the options back to the table. dlx_archive::writeOptions($options, $table_prefix); // delete all posts from the main blog (explude epaper category (term 18) $wpdb->query("DELETE {$wpdb->base_prefix}posts FROM {$wpdb->base_prefix}posts LEFT JOIN {$wpdb->base_prefix}term_relationships wptr ON wptr.`object_id` = {$wpdb->base_prefix}posts.`ID` WHERE {$wpdb->base_prefix}posts.post_type = 'post' AND wptr.term_taxonomy_id != 18"); // we just imported new permalinks settings to the wp_options table, flush the rewrite rules now. flush_rewrite_rules(); } class dlx_archive { static function copyData(array $tables, $source_prefix, $target_prefix) { global $wpdb; foreach($tables as $table) { $sql = "INSERT " . $target_prefix . $table . " SELECT * FROM " . $source_prefix . $table; $wpdb->query($sql); } } static function getOptions($array, $table_prefix) { foreach($array as $option) { $options[$option] = self::getOptionValueFromDB($option, $table_prefix); } return $options; } static function getOptionValueFromDB($key, $table_prefix) { global $wpdb; $option = $wpdb->get_row("SELECT * FROM {$table_prefix}options WHERE option_name = '{$key}'"); return $option->option_value; } static function writeOptions($options, $table_prefix) { global $wpdb; foreach($options as $key => $val) { $sql = "UPDATE {$table_prefix}options SET option_value = '{$val}' WHERE option_name = '{$key}'"; $wpdb->query($sql); } } } 

Если у вас установлено много плагинов, вам также нужно индивидуально заботиться о пользовательских таблицах. У меня был только один плагин, установленный (только для изменения avhec_term_order ).

В основном, что произойдет, если вы создадите новый сайт в сетевом администрировании, то он переместит все сообщения из вашего основного блога в ваш блог архива.

Производительность MySQL просто не справляется с большими таблицами, нет никакой выгоды от использования общей базы данных. Достаточно использовать отдельные таблицы в моем опыте. Но если вы по какой-то причине действительно хотите иметь отдельную базу данных (вышеупомянутое решение основано только на таблицах, так как это работает WPMU), вы можете взглянуть на HyperDB .