Обновление WordPress с перезаписью пользовательских изменений - какие есть стратегии?
Уже дважды я обновлял WordPress, только чтобы осознать (facepalm), что это перезаписывает некоторые изменения, которые я вносил в пользовательский шаблон - например, в боковую панель или что-то подобное.
Конечно, я не ОБЯЗАН обновляться, но это лучше для дополнений и т.д., плюс мне нравится иметь последние версии и исправления ошибок.
Какие стратегии используют другие люди для простого обновления WordPress без потери пользовательских изменений в стандартном шаблоне?

Очень просто: если вы используете стандартный шаблон, переименуйте его папку и объявление CSS-файла, и тогда он не будет обновляться.
Если вам нужны обновления (например, Twenty One часто обновляется), создайте дочернюю тему.
Подробности здесь: http://codex.wordpress.org/Child_Themes

Первое: Никогда не вносите изменения в основные файлы WordPress. Вместо этого создайте плагин для реализации нужных изменений.
Второе: Если вам требуется лишь незначительная или умеренная кастомизация темы, используйте дочернюю тему — это позволит не трогать основные файлы. Альтернативный вариант — переименовать папку темы, чтобы ваши изменения не пропали после обновления.

Взлом основных файлов быстрее, чем написание плагина, если вы к этому не привыкли. Главное - помнить, что вы это сделали.

@Drake: apply_filters() и do_action() буквально занимают где-то в районе 0.0000001 секунды, насколько я помню.
Нет веской причины изменять основной файл.

@Drake: Согласен с Viper007Bond; НЕ ИЗМЕНЯЙТЕ ОСНОВНЫЕ ФАЙЛЫ. ТОЧКА. Если вы хотите оправдать изменение ядра, вы всегда найдёте способ рационализировать это, но это никогда не будет хорошей идеей.

@AlexakaViper007Bond, Drake учитывал обучение написанию плагинов, изучение механизмов хуков и поиск подходящего решения для конкретной задачи. Так что нет, это не 0.0000001 секунды — процесс может занять часы чтения и поиска, тогда как изменение строки PHP кода может занять несколько секунд.

Я не использую обновление через панель управления (Dashboard).
Я устанавливаю WordPress с помощью Subversion; все мои локальные изменения можно увидеть с помощью команды svn diff
, и в большинстве случаев они плавно объединяются с новой кодовой базой при переходе на новый номер версии. Ядро WordPress, а также многие плагины и темы доступны через SVN. К сожалению, не все, но у вас все равно есть выход: создайте репозиторий, чтобы никогда не терять изменения, даже если вы используете автоматическое обновление для плагина. Очевидно, что здесь пригодятся хорошие навыки работы с системами контроля версий. :)
http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion

Храните копию вашей изменённой кодовой базы в системе контроля версий. Я рекомендую Mercurial.
Поместите оригинальную версию кода WordPress, которую вы собираетесь изменять, в Mercurial и зафиксируйте её. Затем поместите вашу изменённую кодовую базу поверх неё и зафиксируйте её, присвоив имя ветки. Назовите ветку, например, 'oursite' или как-то иначе.
Суть в том, что Mercurial теперь знает, чем ваш сайт отличается от стандартной версии. Это упрощает процесс обновлений.
Когда выйдет следующая версия WordPress, скачайте её и поместите поверх вашей локальной рабочей директории Mercurial. Только убедитесь, что вы 'обновили' эту рабочую копию до ветки по умолчанию, то есть не вашей ветки 'oursite'. Теперь Mercurial знает, чем новая версия WordPress отличается от предыдущей. Mercurial отлично справляется с объединением различий между двумя 'дочерними' версиями одного 'родителя', и в большинстве случаев ваши пользовательские изменения будут успешно интегрированы.

Даже моя пользовательская тема время от времени получает обновления. Сначала я загружаю её локально и сравниваю изменения с помощью BeyondCompare, чтобы увидеть, где именно внесены правки, и можно ли безопасно пропустить файлы, в которых были сделаны мои пользовательские изменения. Если нет, я вручную обновляю исходные файлы перед загрузкой на сайт. Это требует дополнительных усилий, но необходимо, если вы вносили собственные правки в тему или сайт.
