Все написанное ниже в равной мере относится к WP1.5.x и WP2.0. Итак, заливаю чистокровный WP, который беру тут: http://wordpress.org/download/ потому что1, даже если собираюсь пользоваться «локализованой версией», потому что2
В файл /wp-config.php вписываю все что требуется BD, тут же определяю префикс$table_prefix = 'wp_'; (если в базе будет жить несколько WP префикс wp_ может быть только у одного).
Вот эту строку лучше пока не трогать:define ('WPLANG', ''); с ее помощью подключают файлы языков, например для русского:define ('WPLANG', 'ru_RU'); но при установке и первоначальной настройке от «локализованостей» лишний головняк, ее можно будет изменить позже, в любое время.
Теперь открываю файл /wp-includes/wp-db.php и ищу в нем код, где осуществляется выбор BD. Выглядит он так:if (!@mysql_select_db($db, $this->dbh)) {
…
}
заменяю на:if (!@mysql_select_db($db, $this->dbh)) :
…
else:
// rEd
mysql_query("SET CHARACTER SET utf8");
endif;
Все это для того, чтобы добавить первым (!) запросом к BD выбор нужной мне кодировку, а нужная мне кодировка – utf8.
Замена никак не повредит англоязычному блогу (интересно, почему до сих пор установку кодировки не включили в «авторский» код), зато я в корне решаю проблему с регистронезависимым поиском в WP, так как блог ведется на родном (русском например) языке. Выполнять этот пункт нужно ДО того как в вашем блоге появятся записи, потому что3. А комментарий (// rEd) нужен, для того чтобы4.
Создаю в корневой папке блога файл robots.txt (для того чтобы разобраться, зачем этот файл можно почитать: Стандарт исключений для роботов) пишу в него:User-agent: *
Disallow: /wp-includes
Disallow: /wp-admin
Disallow: /wp-login.php
Disallow: /wp-register.php
Host: imho.alnet.com.ua
чтобы в результатах поиска не попадались лишние файлы.
Плагины
Для того чтобы «писать на ходу» существуют плагины «человечного ввода текста» я ставлю Textile Plugin 2.6. Здесь можно посмотреть что называется человечным вводом текста. Для того чтобы получать из WP1.5.x русские письма на русском языке существует плагин wp_mail Cyrillic. Активация его в WP2.0 заканчивается сообщением об ошибке, что не мешает плагину выполнять свои функции, за что спасибо автору, которым является Anton Skorobogatov.
Установка WordPress
Установка WordPress. Все написанное ниже в равной мере относится к WP1.5.x и WP2.0.
Май 7th, 2006 at 15:58
А решить подобным образом проблему с поиском ПОСЛЕ появления записей возможно?
Май 7th, 2006 at 16:25
А как это повлияет на уже существующие блоги?
И действует ли как-то эта модификация, если используется версия MySQL, не поддерживающая utf8? (вопрос именно в контексте избегания проблем с русскоязычным поиском)
Май 12th, 2006 at 10:58
Убедительная просьба ответить, хотя-бы по почте, вопросы, заданные в теме очень важны.
Май 14th, 2006 at 22:00
2phil: если бы это было так просто — взять и ответить…
Что знаю наверняка - уже существующие блоги этим методом не вылечишь (потому как в базе тексты хранятся совсем не в UTF)и сделав изменения в /wp-includes/wp-db.php получаем тексты из кракозяблов. Приводим /wp-includes/wp-db.php в исходный вид - тексты опять читаемые, поиск опять регистрозависимый.
Май 14th, 2006 at 22:06
Кординальное решение - собственный вариант руссификации WP основаный на win-1251 предлагает MAX - он очень аргументированно отстаивает при этом “неюникод”.
Я бы, имея уже существующий блог, который вовремя не “привили” от регистрозависимого поиска, поступил так:
а) Сделал бэкап базы. б) перекодировал бы полученный в результате файл в UTF-8 в) залил бы его обратно и г) поправил /wp-includes/wp-db.php
Май 15th, 2006 at 13:05
Тут интересная тонкость - все еще кривее чем кажется, как я понимаю - содержимое базы уже в utf-8, ибо блог изначально на utf-8, но MySQL считает, что кодировка другая. Причем считать что база в UTF-8 он не может в силу собственной старости, как я понимаю.
Поэтому, когда я поправил wp-db.php, кракозябров у меня не полезло, но поиск, соответственно лучше работать не стал. Если я все правильно понимаю, то при моей версии MySQL 4.0.25 надеяться не на что.