user94
  • 0
Новичок

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

  • 0

Почему?

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

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

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

Рассмотреть возможность?

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

Как?

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

Share
  1. Я категорически не согласен с любыми рекомендациями по взлому ядра, так как я еще не нашел ни одной вещи, которую я не мог бы обойти. Единственные люди, у которых есть ядро ​​​​бизнес-хакинга для рабочего сайта, — это те, кому абсолютно не нужно ничего читать по этой теме, поскольку они, вероятно, уже входят в основную команду WordPress. Объяснение людям, как это сделать, просто дает 99 из 100 человек, которым определенно не следует этого делать, возможность рационализировать свои решения. И мне бы очень не хотелось видеть, что это включено здесь. JMTCW.

    • 0
    • В качестве продолжения, вот пример вопроса, который был первым ответом «Это невозможно», и я ответил примером, показывающим, как это сделать: wordpress.stackexchange.com/questions/972/#984 Существует (почти всегда) способ сделать это без взлома ядра.

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

      • 0
    • Вадий прав. Я внес изменения в некоторые из основных файлов, чтобы исправить/улучшить/настроить различные вещи, и я всегда был разочарован при обновлении, потому что мне приходилось проверять изменения и применять свои исправления к новым файлам. Это еще больше расстраивает, когда новые файлы слишком отличаются от старых, а места изменений больше не очевидны (или даже не присутствуют вообще).

      • 0
    • Как я и опасался; иногда, когда нет усовершенствованных ловушек (таких как изменение личных сайтов), единственными ловушками, которые работают для трюка с буферизованным выводом, являются admin_body_class и, admin_footer что означает захват всей страницы. Я только что попробовал, и есть> 2 МБ контента, который нужно найти в соответствующем разделе, а затем проанализировать и изменить перед выводом. Или я могу добавить одну строку кода в правую часть my-sites.php и использовать инструмент сравнения, чтобы применить патч после обновлений (при условии, что он вообще был изменен). В подобных сценариях очень сложно возразить против изменения ядра.

      • 0
    • Гораздо лучше формулировка, чем моя 🙂

      • 0
    • Взлом ядра НИКОГДА не является хорошим решением в долгосрочной перспективе. НИКОГДА.

      • 0
    • @ Фреди31; Это единственный способ обеспечить актуальность, работоспособность и безопасность установки WordPress. Кроме того, «долгий срок», о котором вы здесь говорите, действительно долгий, если между предоставлением исправления для WordPress и его установкой проходит два года и более. Еще больше времени для сообщения о проблеме без исправления. Заботиться.

      • 0
    • Очевидно, что взламывать ядро ​​​​это проблематично, но я нахожу сопротивление и злобу здесь удивительными. Практически во всех других областях FOSS активно поощряется разветвление. Почему настройка WordPress так анафема? Я видел бесчисленное множество других проектов, которые делают именно так, как предложил hakre, используя RCS для создания модифицированной версии программы, сохраняя при этом актуальность ствола. +1 за очевидное предупреждение, но говорящую правду о том, что это действительно возможно, и дающее очевидное предложение о том, как это можно сделать с наименьшими трудностями.

      • 0
    • О, и я только что вспомнил, что дочерние темы делают именно это! Когда вы создаете дочернюю тему, вы, по сути, разветвляете родительскую тему, и всякий раз, когда родительская тема обновляется, вы должны вручную копировать любые изменения в дочернюю тему. Таким образом, эта ненависть к изменению ядра несовместима с другим, идентичным поведением WordPress, которое было принято.

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

    Добавьте хук действия

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

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

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

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


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

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

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

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

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

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

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

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

    Хакерское ядро ​​на самом деле заставляет WordPress развиваться.

    Соображения

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

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

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

    • 0
  4. Проблемы:

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

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

    • 0

Оставить ответ

You must login to add an answer.