WordPressコアファイルの変更


21

どうして?

WordPress自体またはプラグインの動作を変更する簡単な解決策は、プラグインまたはWordPressのファイルを直接変更することです。このようなアイデアを思いつくとき、通常の応答は次のとおりです。

コアをハッキングしないでください。

コアファイルを変更するのが一般的に悪い考えなのはなぜですか?

考えますか?

ただし、サイトにとって重要なことは、コアファイルを変更せずにすてきな方法で実行することが不可能な場合があります。このような状況では、コアのハッキングを開始する前に、何に注意する必要がありますか?

どうやって?

すべてのオプションを検討しましたが、唯一の解決策はコアファイルのハッキングです。これをどのように行うべきですか?コアの変更は、更新などのワークフローにどのように影響しますか?


1
私は回避できない単一のものをまだ見つけていないので、コアをハックする推奨事項に強く反対します。実稼働サイトのビジネスハッキングコアを持っているのは、おそらくWordPressコアチームに既にいるので、このトピックに関する情報をまったく読む必要がない人だけです。どうやってそれを行うかを人々に説明することは、決定を合理化する方法を絶対にすべきではない100人中99人を単に与えます。そして、私はそれがここで可能になるのを本当に嫌います。JMTCW。
MikeSchinkel

フォローアップとして、ここでは最初に答えた質問の例だ「それは不可能です」と私は方法を示す例と答え:wordpress.stackexchange.com/questions/972/#984への道は(ほとんど常に)がありますハッキングコアなしで実行します。
MikeSchinkel

2
コアを変更する場合は、アップグレードするたびに変更を再実行する必要があります。また、インストールを非標準にするため、ユーザーが支援しにくくなります。プラグイン、ウィジェット、テンプレート、フック、またはワードプレスが提供する多くのメソッドのいずれかを作成するだけで、コアを変更する必要がなくなります。
ワディM.

ワディは正しい。さまざまなものを修正/改善/カスタマイズするためにいくつかのコアファイルに変更を加えましたが、変更を確認して新しいファイルにパッチを適用する必要があるため、アップグレード時に常にイライラしていました。これは、新しいファイルが古いファイルとあまりにも類似しておらず、変更の場所がもはや明らかではない(またはまったく存在しない)場合、さらにイライラします。
Synetech

1
それは私が恐れていたとおりです。(例えば、個人用サイトの変更など)は、洗練されたフックが存在しない場合、時には、唯一の緩衝出力トリックその作業をフックであるadmin_body_classadmin_footerその捕捉手段ページ全体を。試したところ、関連するセクションを検索する必要があるコンテンツが2 MBを超えており、出力する前に解析して変更する必要がありました。または、1行のコードを適切な部分に追加しmy-sites.php、diffツールを使用して、更新後にパッチを適用することができます(まったく変更されていると仮定します)。このようなシナリオでコアを変更することを主張するのは本当に難しいです。
Synetech

回答:


21

コアをハッキングする必要がある場合は、他のユーザーが拡張できるように行うことを検討してください。

アクションフックを追加する

10回のうち9回do_action、特定のファイルに余分な呼び出しがあった場合に、望みどおりに実行できます。その場合は、アクションを追加して文書化し、Trac経由でパッチを提出してください。パッチに正当な理由がある場合(つまり、パッチを使用するのはあなただけではない場合)、おそらくコアに追加することができます。

次に、この新しいフックに結び付けて、必要な機能を実行するカスタムプラグインを作成します(リリース/配布する必要はありません!)。

コアファイルをリファクタリングする

また、異なる動作をするためにコードが必要な場合もあります。たとえば、変数を参照渡しするか、エコーするのではなく値を返します。少し時間をかけてコードをリファクタリングして、必要なことを行うようにします...その後Tracを介してパッチを提出し、他の人があなたの作業から利益を得られるようにします。


ここでテーマが開発されていますか?コアをハックすることは必ずしもノーではありません...ほとんどの開発者が新しいユーザーや初心者のプログラマーに非常に落胆させるものです(何かをする方法を尋ねている場合は、コアをハックすることを提案することを検討しています)。

ハッキングコアはWordPressの開発と進化の方法ですが、PHPを学習したばかりの人やWPファイルを操作した経験のない人にとっては危険です。コアに触れる前にプラグインから始めてください-プラグインを壊すとすぐにアンインストールできます(必要に応じてFTP経由で削除します)...しかし、コアを壊すと、あなたのサイトに悪いことが起こり、データベースも同様です。

ただし、コアハックが避けられない状況にある場合は、変更を加えてください。また、変更を目立つ場所に公開します(ブログが目立つ場合は、それで十分かもしれませんが、コミュニティの変更が次のリリースに反映される方法なのでTracをお勧めします)。あなたの変更は、100の異なるサイトの問題を解決する魔法の弾丸になるかもしれません...そのため、サイトの構築を支援したコミュニティに貢献してください。

変更がコミットされると、ハックはコアの一部になり、今後心配する必要はありません。そうでない場合、少なくとも3か月でWPをアップグレードした後、ハックを再実装する方法に関する詳細なドキュメントがあります。


私よりもはるかに良い言い回し:)
hakre

3

コアをハッキングしないでください。

それは、それが第1レベルの経験の浅いユーザーに対する提案だからです。これらのハッキングコアはインストールを中断し、変更が更新を保持することを保証できません。

確かに、コアをハック!

たとえば、SVNなどのバージョン管理システムを使用して、実際にコアをハッキングできます。コアコードの独自の変更をプロジェクトの更新に合わせて維持するのに役立ちます。また、Wordpress用のパッチを作成してプロジェクトに送信するのにも役立ちます。

ハッキングコアは、Wordpressを進化させる事実です。

考慮事項

完全なSVNをインストールしたくないが、変更した(一部の)ファイルがまだわかっている場合は、Diff / Merge(winの場合はWinMerge)や比較機能のあるエディター(例:Notepad ++ with Compare Plugin)。Linuxでは、同じことを行うコマンドラインユーティリティを簡単にインストールできます。Geanyエディタはところで素敵なシェル統合が付属しています。。

大変な仕事にはEclipse PDTが好きです。しかし、それは簡単な編集やハック用ではありません。

したがって、適切なツールを使用していて、コアのハッキングに注意を払いたい場合は、その方法が必要です。他のNoobユーザーサーバーに残っている何かを一緒にハッキングする場合(そう、Wordpressはかなり人気があります)、何かが壊れた場合に簡単に捨てられるプラグインを提供するだけです。


コアをハッキングすることは、長期的には決して良い解決策ではありません。絶対に。
フレディ

@ Fredy31; これは、WordPressのインストールを最新の状態に保ち、安全に保つための唯一の方法です。また、Wordpressにパッチを提供してからそれを入手するまでに2年以上かかる場合、ここで言う「長期」は非常に長くなります。パッチのない問題を報告する場合はさらに長くなります。世話をする。
hakre

1
明らかにコアのハッキングは面倒ですが、ここでの抵抗と心因性は驚くべきものです。FOSSの他のほとんどすべての領域で、分岐が積極的に奨励されています。WordPressをカスタマイズするのはなぜ嫌なのですか?私は、トランクを最新の状態に保ちながら、RCSを使用してプログラムの修正バージョンを作成することで、hakreが示唆するように、他の無数のプロジェクトが行うことを見てきました。明らかな警告を与えるが、それが実際に可能であることを真実に伝え、最小限の難易度でそれを行う方法の明白な提案を与えるために+1。
Synetech

ああ、私はちょうど子供のテーマがまさにこれを行うことを思い出しました!子テーマを作成する場合、基本的には親をフォークすることになり、親が更新されるたびに、子への変更を手動でコピーする必要があります。したがって、コアを変更するというこの憎しみは、受け入れられた別の同一のWordPressの動作と矛盾しています。
Synetech

2

問題は次のとおりです。

  1. コアの更新を行うたびに(セキュリティ修正などのため)、自動アップデータを実行する代わりに、手動で更新する必要があります。
    これをしたい場合は、自分で生活を楽にしてください:
    • すべての変更を共通のマーカーでマークします(例:// PATCH STARTおよび// PATCH END
    • WinMergeなどのツールを使用して、既存のソースと新しいソースを比較し、必要に応じて変更全体をコピーします。
    • コピーするコードの領域が変更された場合に注意し、パッチに適切な変更を加える必要があります
    • クライアントに請求書を送り返すことができない限り、これは「終わりのない」ジョブであり、請求可能な時間を消費することに注意してください。
  2. コアが特定の方法で機能することを期待するプラグインとの非互換性の問題を引き起こす可能性があります-これには追加のテストが必要になります

これは100%避けられない場合もありますが、ほとんどの場合、物事を達成するための別の方法を考え出すことができます。それは単なるメンテナンスの悪夢であり、多くの人々は適切なソリューションを探す代わりに、コアをハッキングすることを好みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.