为什么不黑客WordPress核心文件的原因有哪些?


9

通常,可以通过破解WordPress核心(即更改WordPress本身的代码)来解决问题。

这是一条非常危险的道路!永远不要这样做!


您始终可以通过使用插件来更改WordPress的工作方式。有时这可能会很累并且很困难,但是额外的工作总是会超过通过更改WordPress核心本身而遇到的问题。

有人会说,在某些情况下,破解内核是唯一的解决方案,但是如果您在这里提问,那么您肯定不会遇到这种情况

这个问题旨在作为集体工作的简介,介绍为什么您不应该破解WordPress核心,我们可以以此为参考。如果您要添加任何内容,请随时将其添加为问题。


@googletorp:伙计!
MikeSchinkel 2010年

我不同意一个人永远不要这样做,最初的问题有一些答案,指出了这样做的原因,所以我对此问题投反对票。此外,我也不同意如果您在这里提问,那么您肯定不会处于这种情况。这也是专家的网站,因此不应审查有关黑客核心的问题。但是也许我们应该在meta网站上进一步讨论它
Jan Fabry 2010年

Answers:


5

不破解内核的最好原因是,您所做的任何事情都应该改做为内核的补丁!

显然,您的所有代码根本无法打出很好的补丁,或者至少很少能打出补丁。相反,您需要找出内核中缺少的钩子(动作或筛选器),该钩子可以让您执行需要做的所有事情,而不会破坏内核。当有足够的过滤器/动作时,我们不需要破解内核,因此找到丢失的钩子将始终消除对内核的需要。

这通常可能需要一些棘手的问题解决和棘手的工作,但是更经常的是,您发现已经有一个解决问题的钩子了,所以您不必去破解内核!

在真正没有钩子的极少数情况下,您只需要在trac上发布说明为什么需要存在钩子即可。如果您提交了新的钩子,那么您将有一个暂时的1线内核破解,无需担心下次更新。

即使您很想在Core Trac中完成工作(要使事情付诸实施也需要一些令人信服的努力),但您至少已经将核心hack煮到了最低限度:1行代码用于您的动作/过滤器。当您更新WP时,您现在已经用需要更新的一行替换了推入核心的所有代码,并且您的插件可以保持不变!


@杰里米·克拉克 -好人!
MikeSchinkel 2010年

3

还有一个事实是,一旦将wordpress升级到最新版本,对核心文件的所有更改都会被覆盖


AFAIK这是最初的原因,不是技术上的原因(您可以以某种方式组织它不会对您的安装造成问题),而是因为用户随后在Wordpress支持论坛中抱怨该更新确实破坏了他们的网站。由于升级通常确实已经给自己带来了问题,因此一些用户希望确保至少将“用户自制”问题的数量减少到最低限度。
2013年


1

这个警告已经很久了,比Git这样的分散版本控制系统早得多。过去,要破解内核,您需要将更改作为一组自己的补丁保存。因为一些(大多数经验不足的开发人员喜欢Wordpress)没有做补丁来跟踪他们的更改,所以他们遇到了一个问题:最终,他们在将Worpdress更新到新版本时遇到了问题,这句话就诞生了。

该警告或多或少地在文化上是对“每次您手淫...上帝杀死一只小猫”图片标题的一种侧面说明,显然是很有趣。然而,提出了“黑客入侵WordPress核心”“自慰”之间的类比。这可能导致了相当大的普及。

当然,黑客的核心是一把两面剑,我想这就是你问的原因。

首先,无论是过去还是现在,破解内核都是完全有效,可行和可行的。过去使用补丁集,今天使用git和在Github上公开提供的Wordpressgit repo更容易。

与其通过开玩笑来告诉用户(他们甚至可能不了解其含义)是愚蠢的,而是鼓励他们并对其进行教育。

此外,这是Wordpress历史上较为阴暗的一面,Wordpress社区在这里的推广效果不佳。尽管排序鼓励用户将更改带到上游(这意味着将其带到原始代码存储库中),这通常是一件好事,但Wordpress并没有为他们从上游源接管到树中的库做任何事情。因此,不要轻易说出这些话,Wordpress的领导者核心开发人员也不会遵循从别人那里接手的代码。

因此,如果您通过查看开发人员的手来判断这句话,那纯粹是在开玩笑,这只是庸俗的文化参考。

我能提供的最佳建议是,如果您是开发人员,并且想对核心进行更改,请执行。这样做在它为所欲为的方式而不是别人。WordPress是一种免费软件,这是有原因的,您应该为它以及您使用它而感到自豪。公开或私下。如果您正在寻找使它更可行的方法,请像在进行其他类型的开发工作一样围绕它创建一个工作流。


0

我需要三到半倍的时间来破解内核来解决问题。

1)是一个错误修复。我将其与diff补丁一起报告为Trac中的错误。该功能已在下一版本的WP中进行了重新设计,基本上使该错误无效。在此之前,我可以轻松应用在当前/新安装中创建的补丁。

2)是添加非常详细的日志记录以尝试跟踪用户遇到的非常具体的问题。并非每天都有这种情况,当然也与功能无关。

3a)我想为WP 2.8.5中的类别添加一个额外的字段。内置的挂钩无法正常工作(已知问题),我相信这个特殊问题已在2.9树中修复。归根结底,实现存在缺陷,我们重新设计了功能,使其以不需要核心修改的其他方式工作。

3b)我以为我需要修改核心以更改评论审阅链接,但是在四处浏览时,我发现了一些以前不了解的钩子,并能够将其作为插件实现。


我想说的是,破解核心文件的第一原因是使它们像我需要它们那样工作,而不像其他人认为我可能需要它们那样工作。这可以是临时的(例如在您的调试示例中),但也可以是完整版本甚至主要版本,这是因为原始wordpress软件包(无论是wordpress.org还是有人预先打包的)中没有解决的问题其他)。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.