質問: どうもお世話になります。 表題についてなのですが、皆さんはどうやってやっていて、どうやるのがベストな方法なのかなと気になりました。 どういうことかというと、例えば、あるプラグインのcssを変更したい場合、そのプラグインに最初から入っているスタイルシートを直接変更するか、common.cssのようなそのサイトに対するスタイルシートに記述するか(この場合は!importantが必要ですが)。 これに対しての解説本やサイトがなく、プラグインにあらかじめ入っているスタイルシートに記述をすると、アップデートによる上書きが面倒なため、私はcommon.cssに記述をしています。 また、加えたい機能や、部分的に変更したい機能があった場合も同様です。 http://dev.ontheroad.jp/archives/4426 ↑のサイトを参考にさせていただくと、プラグインには作者の意向で拡張性を持たせるために、aplly_fillte()というものが存在し、function.phpでカスタマイズしていますが、ではそのフィルターがなかった場合はどうやっているか。 基本的に独学ですので、仕事をでwordpressに触れている方々の手法をお聞きしてみたいと思いました。 どうぞ宜しくお願い致します。
回答: 基本的に WordPress およびそのプラグインについて、直接コードを変更することはあまりありません。バージョンアップへの対応ができない可能性が高く、品質を維持できる保証が無いからです。 そのため、フック( `add_action()` `add_filter()` )による変更が基本になります。 フックが無い場合は、場合によって対応が変わります。(プラグインの目的にもよります) 1. プラグイン内部で使用されている関数の内部にあるフックを使う 例えば、多言語化されたプラグインの場合、文字を出力する箇所で `__()` `_e()` などの翻訳関数を使っていることがあるため、その関数自体のフックを利用する。 2. プラグインの関数自体を利用する プラグインからの出力はさせず、機能(関数など)のみ使用する。 3. プラグインを編集し最低限のフックを追加する 避けたいプランです。 4. GPL なのでプラグインを元に新たなプラグインを作成する そもそもプラグイン選定の段階で、「メンテナンスが続きそうか」「適切なフックがあるか」を判断することになるので、あまり多くプラグインは導入しません。 フックやCSSも、プラグインがバージョンをあげるごとに変化する可能性も当然あります。そのため、どちらにせよバージョンアップごとに挙動を確かめる必要があります。 > > そのプラグインに最初から入っているスタイルシートを直接変更するか、 > > common.cssのようなそのサイトに対するスタイルシートに記述するか > > > これはもちろん後者です。 > > aplly_fillte()というものが存在し、 > > > `apply_filters()` の他に `do_action()` も同じくフックに使用できます。`do_action()` はプラグインの挙動を変更するというより、その位置で自作関数を動かす、といった使い方が多いと思います。 【WordPress 徹底解析(アクションフックのプラグインをつくる編) | hiromasa.another :o)】 > > (この場合は!importantが必要ですが)。 > > > 詳細度を考えることで、出来ることなら `!important` を使用しない上書きを行います。 【エンジニアはもう一度CSSとちゃんと向き合ってみよう - 詳細度編 - Qiita】 【詳細度 - CSS | MDN】