Изменение основных файлов WordPress


Почему?

Иногда простым решением для изменения поведения самого WordPress или плагина может быть прямое изменение файлов плагина или WordPress. Когда приходит в голову такая идея, обычным ответом является:

Не взламывайте ядро.

Почему вообще плохая идея менять основные файлы?

Рассмотрим?

Иногда, однако, вещи, которые могут иметь решающее значение для сайта, просто невозможно сделать приятным способом, не изменяя основные файлы. Когда вы оказываетесь в такой ситуации, о чем вам нужно знать, прежде чем вы начнете взламывать ядро?

Как?

Вы рассмотрели все варианты, но единственным решением является взлом основных файлов. Как вы должны это делать? Как измененное ядро повлияет на рабочие процессы, такие как обновление?

 22
Author: Community, 2010-09-09

3 answers

Если вы должны взломать ядро, подумайте о том, чтобы сделать это таким образом, чтобы сделать его расширяемым для других.

Добавить крючок действия

В девяти случаях из десяти вы могли бы сделать то, что хотели, если бы только в определенном файле был дополнительный вызов do_action. В этом случае добавьте действие, задокументируйте его и отправьте исправление через Trac. Если для вашего патча есть веская причина (т. Е. Вы не единственный, кто когда-либо его использовал), то вы, вероятно, сможете добавить его в ядро.

Затем создайте пользовательский плагин (вам не нужно выпускать/распространять его!), Который подключается к этому новому крючку и выполняет любую функцию, которая вам нужна.

Рефакторинг основного файла

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


Видите ли вы здесь развитие темы? Взлом ядра не обязательно означает "нет-нет"... просто то, что большинство разработчиков будут сильно обескураживать для новых пользователей или начинающих программистов (если вы спрашиваете нас, как что-то сделать, мы каждый раз будем предлагать плагин, прежде чем даже подумывать о том, чтобы предложить вам взломать ядро).

Хакерское ядро - это способ, которым WordPress развивается и развивается, но это опасно для кто-то просто изучает PHP или не имеет опыта работы с файлами WP. Пожалуйста, начните с плагина, прежде чем прикасаться к ядру - если вы сломаете плагин, вы можете быстро удалить его (при необходимости удалить через FTP)... но если вы нарушите ядро, с вашим сайтом и, возможно, с вашей базой данных могут произойти плохие вещи.

Но если вы находитесь в ситуации, когда взлом ядра неизбежен, внесите изменения. Кроме того, опубликуйте свое изменение в заметном месте (если ваш блог хорошо виден, это может быть, этого будет достаточно... но я предлагаю Trac, потому что именно так изменения сообщества будут внесены в следующий выпуск). Ваше изменение может стать волшебной пулей, которая может устранить проблемы на сотне различных сайтов... так что внесите свой вклад в сообщество, которое помогло вам создать свой сайт.

Если изменение будет зафиксировано, то ваш взлом станет частью ядра, и вам не нужно будет беспокоиться об этом в будущем. Если это не так, по крайней мере, у вас есть подробная документация о том, как повторите реализацию взлома после обновления WP через 3 месяца.

 20
Author: EAMann, 2010-09-09 14:27:03

Не взламывайте ядро.

Ну, это потому, что это предложение для неопытных пользователей первого уровня. Те, кто взламывает ядро, нарушат их установку, они не смогут гарантировать, что их изменения сохранятся, обновление и т. Д. .

Конечно, взломай ядро!

Уверен, что вы действительно можете взломать ядро, например, используя систему управления версиями, такую как SVN. Это помогает вам поддерживать ваши собственные изменения в основном коде в соответствии с обновлениями проекта. Это также помогает создавайте патчи для Wordpress и отправляйте их в проект.

Хакерское ядро - это то, что заставляет Wordpress развиваться.

Соображения

Если вы не хотите устанавливать полную SVN и все еще знаете, какие (некоторые) файлы вы изменили, вы можете использовать более низкоуровневые инструменты, такие как Diff/Merge (для win: WinMerge) или редакторы с возможностями сравнения (например, Notepad++ с плагином сравнения ). В Linux вы можете легко установить утилиты командной строки, которые выполняют такой же. Редактор Geany поставляется с хорошей интеграцией оболочки, кстати. .

Я предпочитаю Eclipse PDT для тяжелой работы. Но это не для быстрого редактирования или взлома.

Поэтому я бы сказал, что если вы используете правильные инструменты и хотите позаботиться о том, чтобы взломать ядро, то это правильный путь. Если вы взламываете что-то вместе, что осталось на каком-то другом сервере пользователей Noob (да, Wordpress довольно популярен), просто предоставьте плагин, который можно легко удалить, если он что-то сломает.

 3
Author: hakre, 2010-09-09 09:13:53

Проблемы заключаются в следующем:

  1. Каждый раз, когда вы обновляете ядро (например, из-за исправления системы безопасности и т. Д.), Вам придется обновлять его вручную, вместо того, чтобы запускать автоматическое обновление.
    Если вы хотите это сделать, то облегчите себе жизнь:
    • отмечайте каждое изменение общим маркером (например, // PATCH START и // PATCH END)
    • используйте такой инструмент, как WinMerge, чтобы сравнить существующий источник с новым источником и при необходимости скопировать изменения.
    • вы будете нужно следить за тем, чтобы область кода, которую вы копируете, изменилась, и внести соответствующие изменения в свои исправления
    • имейте в виду, что это "бесконечная" работа, занимающая оплачиваемое время, если только вы не можете повторно выставить счет своему клиенту за нее.
  2. Вы можете вызвать проблемы несовместимости с плагинами, которые ожидают, что ядро будет функционировать определенным образом - это потребует дополнительного тестирования

Иногда это на 100% неизбежно, но я почти всегда могу прийти придумайте другой способ достижения цели или измените спецификацию из-за вероятной стоимости времени, потраченного на это. Это просто кошмар обслуживания, и многие люди идут на взлом ядра, вместо того, чтобы искать правильное решение.

 2
Author: Dan Smart, 2010-09-09 08:20:41