Мой сайт о WordPress и PHP С Днем победы!
5 февраля 2007

WordPress 2.1 (русская версия для любой кодировки)

Читали 4928 раз
Рубрика: Мои статьи о WordPress
Навигация: Главная » WordPress » Мои статьи о WordPress

В предыдущей записи я сообщил, что реализовал способ работы WordPress с любой кодировкой базы данных. Теперь настал черед объяснить свои идеи и предложить потестировать эту версию.

Но, вначале несколько важных замечаний.

Прежде всего, особо замечу, что эта версия (я её назвал WordPress 2.1-all) пока не предназначена для массовой установки. Я не могу гарантировать вам её качественную работу и тем более сохранность ваших данных.

Эту версию я предлагаю скачать и установить только тем, кто пожелает её протестировать и сообщить о своём результате. Только после того, как будет определено, что не возникают проблемы, я объявлю о её официальном выходе.

Основные принципы

Их несколько.

Во-первых ваш блог будет работать в UTF-8. Всегда. Проблема чисто техническая - используемый AJAX будет работать только в UTF-8. Так, что другого пути просто нет.

Во-вторых. Если ваша база данных не способна работать в UTF-8, то вы можете установить для неё отдельную кодировку, например Windows-1251.

В-третьих. Вам не нужно сейчас же думать о перекодировании базы данных. В большинстве случаев с этим справится встроенный «перекодировщик».

В-четвертых. Все внешние файлы (шаблоны, плагины) нужно переконвертировать в UTF-8. Для этого нужно их скачать и пересохранить в UTF-8 (например Блокнотом).

Варианты перехода

После обновления мы можем получить два варианта:

  • Блог (UTF-8) - БД (UTF-8)
  • Блог (UTF-8) - БД (WINDOWS-1251)

Первый вариант самый простой, поскольку подразумевает обычную работу WordPress. Второй вариант нас интересует гораздо больше.

Для уже существующих блогов, нужно учитывать в какой кодировке они работают. Если у них кодировка UTF-8, то очевидно, им нет смысла обновлять базу и переходить на WINDOWS-1251 (хотя это и возможно).

Если же существующий блог работает в WINDOWS-1251, то у нас остается только один вариант:

  • Блог (был WINDOWS-1251, стал UTF-8)
  • БД (была WINDOWS-1251, осталась WINDOWS-1251).

Важное замечание. Текущие настройки инсталяции/обновления WordPress установлены именно для такого варианта.

Обратите внимание, что я, хоть и пишу «была/стала», вовсе не означает, переконвертирование самой базы данных. В даном случае мы вообще не касаемся базы данных - перекодирование происходит «на-лету» при получении или отправке данных в базу.

Установка WordPress

Если вы устанавливаете WordPress с «нуля», то инструкция будет несложная.

  • Загрузите на сервер файлы из WordPress 2.1-all.
  • Откройте файл wp-config-sample.php и добавьте в него данные для доступа к БД.
  • Определите каким образом будут храниться данные в MySQL. Вы можете задать кодировку отличную от кодировки блога (кодировка блога всегда будет UTF-8!). Например, вы хотите, чтобы кодировка базы отличалась от кодировки блога, то установите опцию MAXSITE_DB_CONVERT в true. Если кодировка блога и базы данных совпадает, то установите этот параметр в false - в этом случае работа WordPress будет осуществляться как обычно.
  • Если кодировка базы будет отличаться от кодировки блога (MAXSITE_DB_CONVERT = true), то вам нужно указать кодировку БД: параметр MAXSITE_DB_CHARSET (в большинстве случаев это будет WINDOWS-1251).
  • Пояснение. Для корректной работы кодировщика требуется наличие на сервере функций mb_convert_encoding или iconv. Как правило эти функции присутствуют на сервере. Если же их нет, то кодировщик не будет работать.
  • Больше ничего в файле wp-config-sample.php не менять!
  • Сохраните wp-config-sample.php как wp-config.php и загрузите его на сервер.
  • Зайдите на главную страницу сайта. WordPress сам предложит выполнить инсталяцию.
  • Заполните предлагаемые поля. Обязательно указывайте реальный e-mail.
  • После инсталяции WordPress создаст для вас логин и пароль администратора. Сохраните его, иначе вы не сможете войти в админ-панель.

Установка завершена.

Обновление уже существующего блога

Обратите внимание на столь детальную инструкцию. Если вы хотите избежать лишних проблем, строго следуйте её пунктам. Они написаны не просто так!

  • Перед обновлением зайдите в админ-панель.
  • Переключите шаблон на Default.
  • Отключите все плагины.
  • Сделайте бэкап базы данных с помощью phpMyAdmin или mysqldumpcPanel - резервирование). В случае проблем, вы сможете вернуться к предыдущей версии. Это важный шаг, не пропускайте его!
  • Установите кодировку блога в UTF-8 (Настройки - Чтение). Если ваш блог работал в другой кодировке, то вы дожны увидеть знаки вопросов. Так и должно быть!
  • Переименуйте старые каталоги и файлы WordPress'а, включая и /wp-content/ на сервере.
  • Если есть файл .htaccess, то его необходимо оставить.
  • Загрузите на сервер новые файлы из WordPress 2.1-all. Если у вас FTP-клиент спрашивает о замене файлов, значит вернитесь к предыдущему пункту.
  • Откройте файл wp-config-sample.php и добавьте в него данные для доступа к БД (из старого wp-config.php).
  • Определите каким образом будут храниться данные в MySQL. Вы можете задать кодировку отличную от кодировки блога (кодировка блога всегда будет UTF-8!). Например, вы хотите, чтобы кодировка базы отличалась от кодировки блога, то установите опцию MAXSITE_DB_CONVERT в true. Если кодировка блога и базы данных совпадает, то установите этот параметр в false - в этом случае работа WordPress будет осуществляться как обычно.
  • Если кодировка базы будет отличаться от кодировки блога (MAXSITE_DB_CONVERT = true), то вам нужно указать кодировку БД: параметр MAXSITE_DB_CHARSET (в большинстве случаев это будет WINDOWS-1251).
  • Пояснение. Для корректной работы кодировщика требуется наличие на сервере функций mb_convert_encoding или iconv. Как правило эти функции присутствуют на сервере. Если же их нет, то кодировщик не будет работать.
  • Больше ничего в файле wp-config-sample.php не менять!
  • Особое внимание тем, кто переходит с других сборок WordPress. Не используйте свой старый wp-config.php, обязательно возьмите тот, что входит в эту сборку!
  • Сохраните wp-config-sample.php как wp-config.php и загрузите его на сервер.
  • Зайдите в админ-панель. WordPress сам предложит обновится. Соглашайтесь. Если после обновления WordPress опять предлагает обновиться (иногда встречается такой глюк), то просто закройте страничку.
  • При попытке войти в админ-панель, у вас должно появиться сообщение о недостаточных правах для этого действия, либо сообщение об ошибке.
  • Если у вас всё сразу заработало, значит обновление для вас завершено. Скорее всего кодировка блога у вас совпадает с базой данных и дальнейшие действия вам не понадобятся. Иначе продолжайте.
  • Откройте файл wp-config.php. Найдите в самом конце строчку
    require_once(ABSPATH . 'wp-upgrade-all.php');
  • уберите символ комментария «#» в начале строки. Сохраните файл и загрузите его на сервер.
  • Войдите на главную страницу своего блога (НЕ админ-панели!).
  • Вы должны получить сообщение «UPDATE COMPLETED!». Это признак, что вы на верном пути.
  • Вновь откройте файл wp-config.php. Закоментируйте строчку (добавьте в начало символ «#»):
    # require_once(ABSPATH . 'wp-upgrade-all.php');
  • Сохраните и загрузите файл на сервер. Не пропустите этот шаг!
  • Обновление завершено.

Теперь вам нужно перенести старые плагины и свой шаблон.

Перенос старых плагинов и шаблонов

Данный пункт появился в связи с тем, что WordPress 2.1 может не поддерживать старые шаблоны и плагины. Поэтому, после того, как вы активировали плагин или выбрали понравившийся шаблон, сразу проверяйте его работоспособность. Если плагин или шаблон содержат ошибку, то сервер отобразит её на экране. Если вы разбираетесь в PHP, то сможете самостоятельно её исправить. В противном случае обращайтесь к знающему человеку или на наш форум: http://forum.maxsite.org/

Сообщения о тестировании

После того, как вы установили или обновили свой блог, сообщите (в момментариях) об этой операции. Если возникли какие-либо осложнения, то напишите в чем проблема и как вы её решили.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

28 комментариев к “WordPress 2.1 (русская версия для любой кодировки)”

  1. Jimmy:

    Убили наповал две неадекватности в админке Wp 2.1.

    1. в разделе управления рубриками:
    2 лента 0 -1

    Это значит что ссылок в данной рубрике -1? ЭТО КАК? :)

    2. вообще ахтунг

    Личные настройки
    Изменить видимость:
    - Я хочу закрыть мой блог поисковых машин таких как Google и Technorati.
    - Блокировать поисковые системы, но разрешить посетителям читать мой блог.

    Кто-то сильно отжог :) . Либо переводчик, либо сами девелоперы.

    Это звучит примерно так:
    Вы хотите закрыть свой блог от индексации?
    - да
    - угу.

    Найдите как говориться два отличия :)

  2. Максим:

    В этой версии все уже исправлено. Не туда запостили...

  3. DunKan:

    а я вот проблемы недогоняю...
    2.1 я не пробовал еще на вкус, но поделюсь опытом небольшим, если кому поможет - буду рад.

    Столкнулся со следующим - делал блог на локальном компе, и когда восстанавливал через phpmyadmin получал крякозябры, из-за того, что по умолчанию WP в UTF-8 а база - в cp1251. Как вышел из ситуации (при этом WP=UTF-8, база в cp1251, сопоставление базы в cp1251): ставлю блог как обычно, врубаю плагин - http://www.lesterchan.net/portfolio/programming.php WP-DBManager, смотрю мой файл бэкапа локальной базы в UTF-8 (вобщем чтобы русские буквы читабельны были), копирую в буфер, иду в SQL запросы WP-DBManager, там жму вставить и выполнить. Крякозябр нету, блог в UTF-8, база в cp1251.

    Если кому поможет - отлично.
    Если у меня почему-то "неправильно" всё это сделано - просьба объяснить почему - полезно будет :)

  4. Владимир:

    Вообще, классно. Вот только та же проблема, что и WP2.1 UTF-8 осталась, при установке - Warning: array_merge() [function.array-merge]: Argument #2 is not an array in E:\Server\sambar64\docs\Test\wp-includes\capabilities.php on line 190. Правда при этом, пока всё работает

  5. Максим:

    Вот эта ошибка в capabilities.php связана с новыми функциями ролей пользователей. Я сам до конца так и не разобрался, почему при обновлении данные о доступе в некоторых случаях перестают работать. Получается, что данные нужно преобразовать в массив, но это не происходит. Похоже, что этот как-то связано с кодировкой, но каким боком к этому вопросы подойти, не ясно. В этой версии, кстати, я и ввел второй шаг инсталяции, в котором просто сносятся все существующие роли, и создаются заново.

    Но у вас, Владимир, думаю, все дело в сервере. :)

  6. Владимир:

    Максим: Учитывая прошлую проблем, пожалуй да. Большое спасибо)

  7. Владимир:

    Вот только мне не понятно, как теперь осуществлять перевод

  8. Максим:

    Как обычно :) . Только все файлы должны быть в UTF8.

  9. Владимир:

    Ах точно.) Просто у меня редактор, по умолчанию отображал текст в cp1251 и что-то не сообразил. Спасибо)

  10. MrooT:

    Здорово...

  11. Антон:

    А что за бага с кешированием?
    С включенным кешированием отваливается часть сайдбара. Глубоко не копал, отключил его грубо, но неприятно это как-то...

  12. Алекс:

    Вы мне обьясните, ЗАЧЕМ нужно было ставить кодировку UTF-8????? И каким образом теперь возможно перевести на нормальную (windows-1251)? Получается что при любом редактировании файлов скрипта, внесенный текст не отображается в нормальной кодировке. вобщем полная ерунда!

  13. Максим:

    На вопрос «зачем» см. выше. По остальному ничего не понятно :???:

  14. Владимир:

    Вот такая проблема, при открытии rss2: п»ї
    Warning: Cannot modify header information - headers already sent by (output started at E:\Server\sambar64\docs\Test\wp-language.php:1) in E:\Server\sambar64\docs\Test\wp-rss2.php on line 8
    http://localhost/test Фото и дизайн... Thu, 08 Feb 2007 19:48:37 +0000 http://wordpress.org/?v=2.1 en http://localhost/test/?p=1 http://localhost/test/?p=1#comments Thu, 08 Feb 2007 19:48:37 +0000 admin http://localhost/test/?feed=rss2&p=1

  15. Максим:

    Вы неверно сохранили файл wp-language.php. Используйте Блокнот - он без ошибок сохраняет в UTF-8.

  16. Владимир:

    Мда. Что-то вообще странно. Сохранил в "юникоде" с помощью стандартного блокнота. При открытиии главной страницы стал отображаться только китайский или корейский текст и ничего больше. Вернул исходный файл - изменений не последовало. С помощью редактора gridinsoft сохранил его в кодировке windows - всё стало нормально отображаться и более того, rss стал работать. Ну не знаю прям, что за странности.

  17. Владимир:

    Ещё такая странность. Как на иностранном хостинге, так и на localhost не отображаются теги для редактирования записей. Решил эту проблему, установив плагин editormonkey - более "навороченный" визуальный редактор. Но насколько я понимаю, должен отображаться минимум тегов или нет?

  18. Владимир:

    1.При выполнении какго-либо действия в панели администратора (создание записи, активирование плагина, изменение названия рубрики), открывается пустая страница и вверху символы "сп»ї".
    2. Короткая ссылка рубрики принимает такой вид: "%d0%bb%d0%b5%d0%bd%d1%82%d0%b0".
    3. В "Доска объявлений" отсутствует лента новостей.
    Это всё на хостинге.

  19. Максим:

    Кнопки должны отображаться. Может сбросить кэш браузера?

    По остальному.

    1. Вот эти символы свидетельствуют о неверно выполненой кодировке. Используйте Блокнот.

    2. Установите RusToLat

    3. Либо нет доступа к ленте (отображается не сразу, особенно при плохом соединении), либо лента кэшируется WordPress.

  20. Ernst:

    Господа, я не так хорошо разбираюсь в программировании. Следовал инструкции, чтобы обновить WP. Получил проблему с кодировкой. Прошу помочь мне нормализовать работу блога. Спасибо за Вашу квалифицированную помощь.

  21. Максим:

    Ну, квалифицированная помощь бывает только за деньги ;) .

    Судя по вашему сайту, у вас все сделано верно, но почему-то не работает перекодировка. Это может быть в двух случаях.

    1. Проверьте wp-db.php
    2. wp-config.php

    Оба этих файла должны идти из моей сборки.

  22. Ernst:

    Максим wp-config строго по вашим рекомендациям.
    А вот по поводу wp-db впервые слышу. Какие изменения я должен внести в этот файл? Он взят полностью из вашей конфигурации.

  23. Максим:

    Ну тут только гадать можно. Я вижу, что данные без искажений, просто почему-то не перекодируются. Тут возможно несколько вариантов. В wp-config.php должен быть ровно такой, как в сборке. Должна быть указана кодировка блога UTF-8, а кодировка базы WINDOWS-1251, при этом должно быть разрешено перекодирование. Нарушите любое из условий - перекодировщик отключится. Проверьте еще раз.

  24. Ernst:

    Максим, сломалось у меня там, что-то еще. Я готов обсудить с Вами стоимость Вашего платного участия в восстановлении моего блога. E-mail: namakner [at] mail.ru

  25. Holzweg:

    а у меня после апгрейда до 2.1 почему-то сглючила кодировка в фидах, при том что хтмл-контент отображается нормально ( Может подскажете как поправить? Блог в utf, база 1252, использую фидбернер, но дело не в нем...

  26. Максим:

    Может и в нем: http://holzweg.ru/wp-rss2.php

  27. Doctorrr:

    Привет, подскажи пожалуйста следующую вещь:

    ставлю другу вордпресс, раньше с ним не сталкивался. БД в кодировке UTF-8;
    все посты выводятся нормально, но если я вставляю в коде страницы русские символы -- вместо них выводятся знаки вопроса.

    Сталкивался ли с таким? Куда копать?

  28. Doctorrr:

    Не совсем точно выразился:
    * посты выводятся нормально независимо от моих действий
    * русские символы я вставляю в файл текущей темы
    * вот эти-то символы и выводятся в виде знаков "??????"


Оставьте комментарий! (Вы согласны с правилами)

 

:mrgreen: :neutral: :twisted: :arrow: :shock: :smile: :???: :cool: :evil: :grin: :idea: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad: :!: :?:

При добавлении кода (html, php) заменяйте < на &lt; и > на &gt;.
Внимание: антиспам - зверь! Копируйте своё сообщение перед отправкой. На всякий случай.