Как поменять название домена при переезде на другой домен?
Скажите пожалуйста как правильно изменить название домена на рабочем сайте, когда я изменяю домен сайта, т.е. переезжаю на другой домен. Например был example.com, а стал myexample.com. Такая смена домена иногда очень тормозит разработку...
Хотелось бы получить SQL запросы при замене домена, у вас наверняка есть такой код.
Я использую такой код:
/** * Замена старого домена на новый повсюду в базе данных WordPress. Нужно при смене домена сайта. * * Использование: * 1. Вставьте код в файл 'wp-config.php' или в любой другой файл, например, 'functions.php' темы. * 2. Добавьте в любой URL сайта параметр 'change_domain': 'http://example.com?change_domain'. * 3. зайдите на сайт. На экране увидите такой текст: "Замена домена в БД: с 'old' на 'new'. Обработано строк в базе данных: 25" * * Автор: Kama * URL: http://wp-kama.ru/question/kak-pomenyat-nazvanie-domena-pri-pereezde-na-drugoj-domen * ver: 10 */ if( isset($_GET['change_domain']) ){ function kama_repdomains(){ $old_domain = 'example.com'; $new_domain = 'dev.example.com'; // добавим схему если её нет. '//' в начале считается наличием схемы... $perlace_doms = array(); if( preg_match('~^(https?://|//)~', $old_domain) ){ $perlace_doms[ $old_domain ] = $new_domain; } // если никакой протокол не указан else { $scheme = @ $_SERVER['REQUEST_SCHEME'] === 'https' || @ $_SERVER['HTTPS'] === 'on' || $_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http'; $new_domain = "$scheme://$new_domain"; $perlace_doms[ "http://$old_domain" ] = $new_domain; $perlace_doms[ "https://$old_domain" ] = $new_domain; $perlace_doms[ "//$old_domain" ] = preg_replace('~https?:~', '', $new_domain ); // вариант без протокола } // SQL запросы global $wpdb; $sqls = array( "UPDATE {$wpdb->prefix}options" => " SET option_value = REPLACE(option_value, %s, %s) WHERE option_name = 'home' OR option_name = 'siteurl'", "UPDATE {$wpdb->prefix}posts" => " SET post_content = REPLACE (post_content, %s, %s)", "UPDATE {$wpdb->prefix}posts" => " SET guid = REPLACE (guid, %s, %s)", "UPDATE {$wpdb->prefix}postmeta" => " SET meta_value = REPLACE (meta_value, %s, %s)", "UPDATE {$wpdb->prefix}comments" => " SET comment_content = REPLACE (comment_content, %s, %s)", "UPDATE {$wpdb->prefix}comments" => " SET comment_author_url = REPLACE (comment_author_url, %s, %s)", ); $outdata = array(); foreach( $sqls as $uptable => $_sql ){ $_sql = "$uptable $_sql"; foreach( $perlace_doms as $old_dom => $new_dom ){ $sql = $wpdb->prepare( $_sql, $old_dom, $new_dom ); $outdata[ $uptable ] += $wpdb->query( $sql ); $outdata[] = $sql; } } echo '___explode_mark___ <h2>Замена домена в БД</h2> <h4>'. implode('<br>', array_keys($perlace_doms) ) .' <br>на<br> '. $new_domain .'</h4> <h4> <'.'pre>'. print_r( $outdata, 1) .'</'.'pre> Заметка: сколько строк затронуто указано в элементе массива: UPDATE table_name: </h4> '; exit; // die - not available in shutdown_function } ob_start(function($buffer){ $html = explode('___explode_mark___', $buffer); return $html[1]; }); if( function_exists('did_action') && did_action('plugins_loaded') ) kama_repdomains(); else register_shutdown_function('kama_repdomains'); }