2

我最近不得不从事一个项目,以前的开发人员修改了 wp-admin 目录。对我来说这似乎是个坏主意,因为 Wordpress 会不断更新。我只是没有那种修改 Wordpress 的专业水平吗?

4

5 回答 5

6

作为开源,我认为像 WordPress 这样的软件在任何时候都可以修改和扩展。

修改或不修改是权衡取舍。新功能可以封装为模块,这可能会导致其功能的集成度低于预期。但是,完全集成更改可能会阻碍随着新版本的发布而轻松更新软件。

它确实需要非常熟悉软件的人才能直接修改软件,但这不一定是一个坏主意。

顺便说一句,我认为修改 WordPress 几乎是必要的,特别是如果您希望它具有体面的架构或实际上是安全的(好吧,那是一个刺拳,起诉我)。

于 2008-10-15T02:41:46.143 回答
6

好吧,这只是一个坏主意,因为这意味着您现在负责维护内部事实上的分叉……每次 WordPress 发布更新时,您都必须进行三向差异以将您的更改合并到新的“真实“ WordPress。(三向差异意味着您在旧版本的分支和标准旧版本之间进行差异以构建补丁集,然后将该补丁集应用于新版本。)您还应该自己使用 VCS 来保持自己理智的。

如果你做不到这一点,那么你就做不到,遵循 KISS 原则并且不弄乱应用程序代码并没有错。

如果您可以编写一个插件来做同样的事情并且同样高效,那么您应该这样做,这样您就不必维护自己的 fork。

但是,WordPress 有很多糟糕的地方(效率、安全性),您可以通过破解应用程序代码来改善(有时不需要做太多工作,只需禁用您不需要的代码)。WordPress 是肮脏的遗留意大利面条代码,最初是由对软件或数据库设计知识几乎为零的人编写的,它做了很多非常愚蠢的事情,比如在每次请求时查询数据库以查看它自己的siteurl内容,而这永远不会改变——有花 5 分钟时间更改 2 行代码并没有错,所以它不再这样做了。

我在当时排名前 20 的 Technorati 博客中担任技术主管,并做了很多工作以在单个服务器上扩展 WordPress,然后扩展到集群(管理员与公共访问具有单独的服务器)。我们有上游反向代理(即 Varnish 或 Squid)充当 HTTP 加速器和一个内部对象/页面片段缓存系统,该系统插入 memcached 并使用 PEAR::Cache_Lite 故障转移到文件系统缓存。我们不得不修改 WordPress 来做一些事情,比如发送理智的、缓存友好的 HTTP 标头,以禁用许多不必要的 SQL 和处理。

我修改了 WP 以使用 MySQL 的仅内存 NDB 集群存储引擎运行,这意味着在很多查询中指定索引(但最终我们选择了复制集群)。在将其修改为在单独的服务器上运行以供管理员和公共访问时,我们锁定了公共端版本,因此它以大大降低的 MySQL 权限运行,只允许读取(第三个 MySQL 用户获得了评论权限)。

如果您有严重的垃圾评论问题(即 10K/小时),那么您必须做一些超越插件的事情。垃圾邮件会拒绝你,因为 WordPress 刚刚初始化其核心在没有并发的独立 P4 上大约需要半秒,而且由于 WP 是一个代码毛球,所以如果不先初始化核心就无法做任何事情。

“WP-Cron” 是脑死的,如果您可以访问实际的 crontab 来执行这些功能,则应该禁用它。做起来不难。

简而言之,我可以继续列出您可能想要进行修改的原因。

在整个过程中,出于可维护性的原因,将这些修改保持在最低限度并尽可能清晰地记录它们当然是一个目标,并且在有意义时我们将许多作为插件实现。

于 2008-10-15T03:43:30.370 回答
0

在一个博客/论坛组合中,我们将注册程序整合在一起,以便人们填写一张表格同时注册 WordPress 和 phpBB。我确信使用插件有更好的方法来做到这一点,但它确实有一个意想不到的好处——它真的让垃圾邮件机器人感到困惑。尽管每天都有几个人注册,但我们在论坛的生活中大约有两个垃圾邮件帖子。

当然,我不建议这样做 - 它会阻止我们升级任何一个软件。

于 2008-10-15T02:46:01.453 回答
0

如果可能的话,我倾向于强烈反对修改核心代码,尤其是在像 WordPress 这样更新的项目中。如果 WordPress 无法通过插件等来完成您需要的工作,那么您最好使用像 Drupal 这样可扩展/通用的系统。将面向博客的 CMS 入侵到其他东西中可能不值得。

于 2008-10-15T02:50:08.013 回答
0

在旧版本的 WordPress(1.0 甚至早期的 2.0)中,我不会对修改 WordPress 本身视而不见。

然而,WordPress 的架构已经成熟。侧边栏不再需要手动编码。相反,您可以移植您的主题以使用小部件并创建小部件(真是天赐良机!)。不喜欢某些东西的显示方式 - 只需修改主题!不喜欢 WordPress 的处理方式?创建一个插件。我很难想出修改 WordPress 代码本身的理由,而这些代码本身无法通过 WordPress 的现代模块化组件(小部件、插件、主题)来处理。

我是那种总是在像 WordPress 这样的开源应用程序中获得“幕后”的人。然而,如今,真的没有充分的理由来修改核心 WordPress 代码。

于 2008-10-16T01:16:45.173 回答