Was sind einige Gründe, warum Sie WordPress-Kerndateien nicht hacken sollten?


9

Oft ist eine schnelle Lösung für ein Problem, kann durch Hacken Wordpress Kern gelöst werden, dass der Code verändert , die Wordpress selbst ist.

Dies ist ein sehr gefährlicher Weg! Tu es niemals!


Sie können die Funktionsweise von WordPress jederzeit mithilfe von Plugins ändern. Dies kann manchmal ziemlich lästig und schwierig sein, aber die zusätzliche Arbeit überwiegt immer die Probleme, die Sie durch das Ändern des WordPress-Kerns selbst bekommen.

Einige würden sagen, dass es Situationen geben kann, in denen das Hacken des Kerns die einzige Lösung ist, aber wenn Sie hier Fragen stellen, sind Sie definitiv nicht in dieser Situation .

Diese Frage soll eine Einführung in eine kollektive Arbeit sein, warum Sie niemals den WordPress-Kern hacken sollten, den wir als Referenz verwenden können. Wenn Sie etwas hinzufügen möchten, können Sie es gerne als Frage hinzufügen.


@googletorp : Du rockst Kerl!
MikeSchinkel

Ich bin nicht der Meinung, dass man es niemals tun sollte. Die ursprüngliche Frage enthält einige Antworten, die auf Gründe hinweisen, warum. Deshalb stimme ich dieser Frage zu. Darüber hinaus stimme ich auch nicht zu, dass Sie sich definitiv nicht in dieser Situation befinden , wenn Sie hier Fragen stellen . Dies ist auch eine Seite für Experten , daher sollten Fragen zum Hacking Core nicht zensiert werden. Aber vielleicht sollten wir es auf der Meta-Site weiter diskutieren .
Jan Fabry

Antworten:


5

Der beste Grund, Core nicht zu hacken, ist, dass alles, was Sie tun, stattdessen als Patch für Core überarbeitet werden sollte!

Offensichtlich würde ALLER Code überhaupt keinen guten Patch ergeben, oder zumindest selten. Stattdessen müssen Sie herausfinden, welcher Hook (Aktion oder Filter) im Kern fehlt, mit dem Sie alles tun können, was Sie tun müssen, ohne den Kern zu hacken. Wir müssen den Kern nicht hacken, wenn es geeignete Filter / Aktionen gibt. Wenn Sie also herausfinden, was der fehlende Haken ist, müssen Sie den Kern nicht mehr hacken.

Dies kann oft eine schwierige Problemlösung und knifflige Arbeit erfordern, aber meistens stellen Sie nicht fest, dass es bereits einen Haken gibt, um Ihr Problem zu lösen , sodass Sie den Kern nicht hacken müssen!

In dem seltenen Szenario, in dem es wirklich keinen Haken gibt, müssen Sie nur auf trac posten und erklären, warum Ihr Haken existieren muss. Wenn Sie Ihren neuen Hook festschreiben, haben Sie einen temporären 1-Zeilen-Hack zum Kern, über den Sie sich beim nächsten Update keine Sorgen machen müssen.

Selbst wenn Sie es nicht mögen, Dinge im Core-Trac zu erledigen (es braucht einige Überzeugungsarbeit, um Dinge zu erledigen), haben Sie Ihren Core-Hack zumindest auf das Minimum reduziert: 1 Codezeile für Ihre Aktion / Ihren Filter. Wenn Sie WP aktualisieren, haben Sie jetzt den gesamten Code, den Sie in den Core verschoben haben, durch eine Zeile ersetzt, die aktualisiert werden muss, und Ihr Plugin kann gleich bleiben!


@ Jeremy Clark - Gut!
MikeSchinkel

3

Es gibt auch die Tatsache, dass nach dem Upgrade von WordPress auf die neueste Version alle Änderungen an den Kerndateien überschrieben werden


AFAIK Dies war der ursprüngliche Grund, nicht technisch (Sie können dies so organisieren, dass das Bearbeiten Ihrer Installation kein Problem darstellt), sondern weil sich Benutzer in den Wordpress-Supportforen darüber beschwert haben, dass das Update ihre Website beschädigt hat. Da Upgrades oft schon alleine Probleme bereiteten, wollten einige Benutzer sicherstellen, dass zumindest die Anzahl der "vom Benutzer selbst erstellten" Probleme niedrig und aus der Gleichung herauskommt.
hakre


1

Diese Warnung ist viel alt, viel vor den Zeiten dezentraler Versionskontrollsysteme wie Git . Damals mussten Sie Ihre Änderungen als eigene Patches behalten, um den Kern zu hacken. Da einige (meist unerfahrene Entwickler, die mit Wordpress herumgespielt haben) keine Patches erstellt haben, um ihre Änderungen zu verfolgen, stießen sie auf ein Problem: Am Ende hatten sie Probleme mit der Aktualisierung von Worpdress auf die neue Version und das Sprichwort war geboren.

Die Warnung war mehr oder weniger ein kultureller Nebenverweis auf die Bildunterschrift "Jedes Mal, wenn Sie masturbieren ... Gott tötet ein Kätzchen" und bedeutete offensichtlich Spaß. Es wurde jedoch die Analogie zwischen "Hacking WordPress Core" und "Masturbieren" angesprochen. Dies hat wahrscheinlich zu einer gewissen Popularität geführt.

Sicher, Hacking Core ist ein zweiseitiges Schwert, und ich denke, deshalb haben Sie gefragt.

Erstens ist es sowohl in der Vergangenheit als auch in der Gegenwart durchaus gültig, möglich und machbar , den Kern zu hacken. In der Vergangenheit mit Patch-Sets und heute noch einfacher durch die Verwendung von Git und dem Git-Repo von Wordpress, das auf Github öffentlich verfügbar ist .

Anstatt den Benutzern (die vielleicht nicht einmal verstehen, worum es geht) zu sagen, dass sie dumm sind, indem sie Witze über sie machen, ist es besser, sie zu ermutigen und sie aufzuklären.

Auch und dies ist eine der dunkleren Seiten in der Wordpress-Geschichte, die Wordpress-Community fördert hier nicht gut. Obwohl es Benutzer irgendwie dazu ermutigt, Änderungen in den Upstream zu bringen (dh in das ursprüngliche Code-Repository), was normalerweise eine gute Sache ist, hat Wordpress dies nicht für die Bibliotheken getan, die sie aus Upstream-Quellen in ihren Baum übernommen haben. Also diese Worte halten leicht, es ist nichts Wordpress Blei und Kern - Entwickler folgte für den Code , den sie von den anderen über als auch getroffen wurden.

Wenn Sie also das Sprichwort anhand der Hände der Entwickler beurteilen, ist es nur ein Scherz, es ist nur eine vulgäre kulturelle Referenz.

Der beste Vorschlag, den ich machen kann, ist, wenn Sie ein Entwickler sind und Änderungen am Kern vornehmen möchten, tun Sie es. Mach es so, wie es dir gefällt , nicht anderen. Wordpress ist aus einem bestimmten Grund freie Software und Sie sollten stolz darauf sein und darauf, was Sie selbst damit machen. Öffentlich oder privat. Wenn Sie nach Möglichkeiten suchen, dies praktikabler zu machen, erstellen Sie einen Workflow darum herum, wie Sie es auch tun würden, wenn Sie andere Arten von Entwicklungsarbeiten ausführen.


0

Es gab dreieinhalb Mal, dass ich den Kern hacken musste, um ein Problem zu lösen.

1) War ein Bugfix. Ich habe es als Fehler in Trac zusammen mit einem Diff-Patch gemeldet. Die Funktionalität wird bereits in der nächsten Version von WP überarbeitet, wodurch der Fehler im Grunde genommen ungültig wird. Bis dahin kann ich den Patch, den ich erstellt habe, problemlos auf aktuelle / neue Installationen anwenden.

2) Es sollte eine sehr detaillierte Protokollierung hinzugefügt werden, um ein sehr spezifisches Problem aufzuspüren, auf das ein Benutzer stieß. Keine alltägliche Situation und schon gar nicht funktional.

3a) Ich wollte den Kategorien in WP 2.8.5 ein zusätzliches Feld hinzufügen. Die eingebauten Hooks dafür haben nicht richtig funktioniert (bekanntes Problem), und ich glaube, dieses spezielle Problem wurde im 2.9-Baum behoben. Am Ende des Tages war die Implementierung fehlerhaft und wir haben die Funktion so umgestaltet, dass sie auf eine andere Art und Weise funktioniert, für die keine Kernmodifikation erforderlich war.

3b) Ich dachte, ich müsste den Kern ändern, um die Links zur Kommentarmoderation zu ändern, aber während ich mich umsah, fand ich einige Hooks, von denen ich vorher nichts wusste, und konnte die Funktion als Plugin implementieren.


Ich würde sagen, der Hauptgrund für das Hacken von Kerndateien besteht darin, dass sie so funktionieren, wie ich sie brauche, und nicht so, wie andere glauben, ich könnte sie brauchen. Dies kann vorübergehend sein (wie in Ihrem Debugging-Beispiel), kann jedoch auch für eine Vollversion oder sogar für Hauptversionen gelten, da Probleme nicht im ursprünglichen WordPress-Paket behoben werden (z. B. wordpress.org oder von jemandem vorverpackt) sonst).
hakre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.