По каким причинам вам не следует взламывать файлы ядра WordPress?


9

Часто быстрое решение проблемы может быть решено путем взлома ядра WordPress, то есть изменения кода самого WordPress.

Это очень опасный путь! Не делай этого никогда!


Вы всегда можете изменить работу WordPress с помощью плагинов. Иногда это может быть довольно утомительно и сложно, но дополнительная работа всегда перевешивает проблемы, возникающие при смене самого ядра WordPress.

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

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


@googletorp : Ты рок чувак!
Майк Шинкель

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

Ответы:


5

Лучшая причина не взламывать ядро ​​в том, что все, что вы делаете, должно быть переработано как патч для ядра!

Очевидно, что ВСЕ ваш код вообще не будет хорошим патчем, или, по крайней мере, так будет редко. Вместо этого вам нужно выяснить, какой хук (действие или фильтр) отсутствует в ядре, что позволит вам делать все, что вам нужно, без взлома ядра. Нам не нужно взламывать ядро ​​при наличии адекватных фильтров / действий, поэтому обнаружение отсутствующего хука всегда устранит необходимость взлома ядра.

Часто это может потребовать некоторого сложного решения проблем и сложного труда, но чаще всего не получается, если вы обнаружите, что уже есть крючок для решения вашей проблемы , поэтому вам не нужно взламывать ядро!

В редком сценарии, где действительно нет хука, вам просто нужно опубликовать на trac объяснение, почему ваш хук должен существовать. Если вы получите новый хук, то у вас будет временный хакерский ввод в 1 строку, и вам не придется беспокоиться о следующем обновлении.

Даже если вы плохо справляетесь с работой, выполняемой в Core trac (требуется что-то убедительное, чтобы сделать что-то совершенное), вы, по крайней мере, довели свой хак до минимума: 1 строка кода для вашего действия / фильтра. Когда вы обновили WP, вы теперь заменили весь код, который вы вставили в ядро, одной строкой, которую нужно обновить, и ваш плагин может остаться прежним!


@ Джереми Кларк - Хорошо!
MikeSchinkel

3

Существует также тот факт, что после обновления WordPress до последней версии все ваши изменения в основных файлах будут перезаписаны


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


1

Это предупреждение устарело, намного раньше времен децентрализованных систем контроля версий, таких как Git . В те времена, чтобы взломать ядро, вам нужно было сохранить свои изменения как набор патчей самостоятельно. Поскольку некоторые (в основном неопытные разработчики, работающие с Wordpress) не делали исправлений для отслеживания своих изменений, они столкнулись с проблемой: в конце концов, у них возникли проблемы с обновлением Worpdress до новой версии, и родилась поговорка.

Предупреждение было более или менее культурной ссылкой на заголовок с надписью «Каждый раз, когда ты мастурбируешь ... Бог убивает котенка» и явно имел в виду забаву. Однако была проведена аналогия между «взломом ядра WordPress» и «мастурбацией» . Это, вероятно, привело к некоторой популярности.

Конечно, ядро ​​взлома - это двусторонний меч, и я думаю, поэтому вы и спросили.

Прежде всего, это вполне допустимо, возможно и осуществимо как в прошлом, так и в настоящем взломать ядро. В прошлом с наборами патчей и еще проще сегодня с использованием git и git-репозитория Wordpress, публично доступных на Github .

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

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

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

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


0

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

1) Была исправлена ​​ошибка. Я сообщил об этом как об ошибке в Trac вместе с патчем diff. Функциональность уже перерабатывается в следующей версии WP, в основном это делает ошибку недействительной. До тех пор я могу легко применить созданный мной патч к текущей / новой установке.

2) Нужно было добавить очень подробную регистрацию, чтобы попытаться отследить очень специфическую проблему, с которой столкнулся пользователь. Не повседневная ситуация, и уж точно не связанная с функциональностью.

3a) Я хотел добавить дополнительное поле для категорий в WP 2.8.5. Встроенные хуки для этого не работали должным образом (известная проблема), и я считаю, что эта конкретная проблема была исправлена ​​в дереве 2.9. В конце концов, реализация была ошибочной, и мы перепроектировали функцию, чтобы она работала другим способом, не требующим модификации ядра.

3b) Я думал, что мне нужно изменить ядро, чтобы изменить ссылки модерации комментариев, но пока я копался, я обнаружил некоторые хуки, о которых раньше не знал, и смог реализовать эту функцию в виде плагина.


Я бы сказал, что причина взлома основных файлов - заставить их работать так, как они нужны мне, а не так, как думают другие. Это может быть временно (как в вашем примере отладки), но это может также относиться к полной версии или даже к основным версиям из-за проблем, которые не могут быть исправлены в оригинальном пакете WordPress (будь то WordPress.org или кто-то предварительно запакован) еще).
Хакре
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.