WordPress как на ладони
wordpress jino

Как поменять название домена при переезде на другой домен?

Скажите пожалуйста как правильно изменить название домена на рабочем сайте, когда я изменяю домен сайта, т.е. переезжаю на другой домен. Например был site.ru, а стал mysite.ru. Такая смена домена иногда очень тормозит разработку...

Я нашел в сети вариант от Миши: Генератор SQL-запросов, необходимых при смене домена сайта на WordPress. Попробовал его, вроде бы все работает.

Тут задаю вопрос просто так, интересно ваше мнение.

Спасибо за ответ и за такой замечательный сайт!

Успехов вам во всем!

0
Гость 1.3 года назад
  • 0
    Kama4486

    Я использую такой код:

    /**
     * Замена старого домена на новый повсюду в базе данных WordPress. Нужно при смене домена сайта.
     *
     * Использование:
     * 1. Вставьте код в файл 'wp-config.php' или в любой другой файл, например, 'functions.php' темы.
     * 2. Добавьте в любой URL сайта параметр 'change_domain': 'http://site.ru?change_domain'.
     * 3. зайдите на сайт. На экране увидите такой текст: "Замена домена в БД: с 'old' на 'new'. Обработано строк в базе данных: 25"
     *
     * Автор: Kama
     * URL: http://wp-kama.ru/question/kak-pomenyat-nazvanie-domena-pri-pereezde-na-drugoj-domen
     * ver: 7
     */
    if( isset($_GET['change_domain']) ){
    	// НАСТРОЙКИ -----------------
    	$GLOBALS['old_domain'] = 'oldsite.ru'; // http(s) добавляется автоматически
    	$GLOBALS['new_domain'] = ''; // '' = текущий домен сайта (без слэша на конце, с http(s))
    
    	function kama_repdomains(){
    		global $wpdb;
    
    		$old_domain = $GLOBALS['old_domain'];
    		$new_domain = $GLOBALS['new_domain'];
    
    		$scheme = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : 'http';
    
    		if( ! $new_domain )
    			$new_domain = "$scheme://{$_SERVER['HTTP_HOST']}"; // текущий домен по умолчанию
    
    		$old_domain = rtrim( $old_domain, '/'); // удалим закрывающий слэш
    		$new_domain = rtrim( $new_domain, '/'); // удалим закрывающий слэш
    
    		// добавим схему если её нет. '//' в начале считается наличием схемы...
    		if( ! preg_match('~^(https?://|//)~', $old_domain) ) $old_domain = "$scheme://$old_domain";
    		if( ! preg_match('~^(https?://|//)~', $new_domain) ) $new_domain = "$scheme://$new_domain";
    
    		$count = 0;
    
    		// SQL запросы
    		$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) WHERE post_type = 'attachment'",
    			"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)",
    		);
    
    		foreach( $sqls as $sql )
    			$count += $wpdb->query( $wpdb->prepare($sql, $old_domain, $new_domain ) );
    
    		exit("
    		<h1>
    			Замена домена в БД: с '$old_domain' на '$new_domain'.
    			<br><br>
    			Обработано строк в базе данных: $count
    		</h1>
    		");
    		// die - not available in shutdown_function
    	}
    
    	if( function_exists('did_action') && did_action('plugins_loaded') ){
    		kama_repdomains();
    	}
    	else{
    		define('SHORTINIT', true);
    		register_shutdown_function('kama_repdomains');
    	}
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.