- ベストアンサー
ワードプレスのプラグインを編集したい
ワードプレスのプラグインをカスタマイズしようとしています。 直接プラグインを編集すると更新のときにもとにもどるので、それを避けたいと思っています。 子テーマの中に入れたら良いかと思ったのですが、反映されませんでした。 プラグインをカスタマイズし、かつアップデートの影響をうけないようにするにはどうすればよいでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>php echo のあとの文字~ そうなって来ると一筋縄では行かないというか。前述した通り、漠然とした質問のみだけされましても、回答側も想像でしか回答出来ないので、無意味な堂々巡りを繰り返すだけです。 これ以上は具体的なプラグイン名を明示して、そのどの部分を修正したいのか具体的に「PHPファイルの何行目」~みたいに言ってもらわないと回答不能ですね。
その他の回答 (2)
- 4017B
- ベストアンサー率73% (1336/1814)
その様な場合、子テーマのフォルダの中にある functions.php というファイルに自作関数を追記する形である程度までは対応可能です。しかしながら具体的にどの様な追記をすれば良いのかは、修正を適用させたい実際のプラグインの形によって様々に変化しますので、漠然とした質問だけでは何ら有用性の有る回答は出来ません。 もし質問者が既に停止させたいプラグイン等の具体的な関数名が分かっている場合、WPの基本的絶対的な仕様として「子テーマの"functions.php"と"style.css"に記述された同名の関数やスタイル設定値が上書きされる」というモノを利用して、そのプラグインのPHPファイルに記述されている関数名と同じ名前の自作関数を functions.php に追記し、{}の中身を何も記述せずに上書き保存して再更新すれば、プラグイン側の関数は起動せずに子テーマのfunctions.phpに追記した同名の関数の方が上書き適用され、そして何も中身が無いので何もせずに動作が終了します。 例えばプラグインの xxx() という名前の関数を停止、或いは修正したいのでれば、それと全く同じ関数名で自作関数を子テーマのfunctions.phpに追記します。そうすればWPの仕様で子テーマのfunctions.phpに記述されている関数に一番、最優先実行権が与えられるため、プラグイン側の同名関数は無視され起動しなくなります。 まあこういうのは文字で言っても分かり難いと思いますので。質問者側にローカルなWP環境などがあるのであれば、まずは適当な関数を選んで実験してみてください。とりあえず画面上に表示されるHTML文字列などを書き換える様な自作関数で実験してみれば、実際にどの様な感じにハックされるのかが分かるかと思います。 基本的にはそんな感じで、子テーマのfunctions.phpに同名関数を追記してハックする形で制御します。こうして置けば、アップデート等で大本のプラグインのPHPファイルが上書き更新されたとしても関数名が変更されていないければ、子テーマ側のfunctions.phpの関数名の方が優先される状態を継続させる事が出来ます。 通常、プログラムコードは大幅アップデートしない限り、関数名が変更される事はほとんど無いため。この方法は多くの場面で恒久的に有効な対策となります。仮に上手く行かなかった場合でも、functions.phpの追記部分を削除するだけで元に戻るので、それなりに安全に修正実験を行う事が可能です。
お礼
なるほど、詳しい説明をありがとうございます! 非常にわかりやすく、安全な方法で助かります。 試しにやってみます。
補足
更に質問で申し訳ないのですが、変更したいのが、関数というよりプラグインの中にあるページの内容だったりした場合は、どうにもならないでしょうか? <?php echo のあとの文字やそのページに表示する表記を変更したい場合です。別のphpではあるのですが、元のページにあるものは、<?php echo に続く普通のhtml表記です。 そうい場合は、どのように変更すれば良いでしょうか? もしご存じでしたら教えていただけたら幸いです。 よろしくお願いします。
- 名探偵 コナン(@FORSPOKEN)
- ベストアンサー率33% (333/998)
プラグインのカスタマイズを行いたい場合、次の手順でアップデートの影響を受けずにカスタマイズできます。😊👩💻 子プラグインを作成: プラグインのコピーを作成し、元のプラグインとは別のディレクトリに配置してください。これにより、アップデート時に元のプラグインの変更が上書きされることを防ぎます。📁✨ ファンクションのオーバーライド: プラグイン内の関数やフックを、子テーマのfunctions.phpファイルでオーバーライド(上書き)します。これにより、プラグイン自体を編集することなく、カスタマイズを行うことができます。👨💻🔧 カスタムフックの追加: プラグインがカスタムフックを提供している場合、子テーマのfunctions.phpファイルでフックにアクションやフィルターを追加することで、カスタマイズを実現できます。🔗🛠️ プラグインのサポートやドキュメントを参照: プラグイン開発者が提供しているサポートやドキュメントを確認し、カスタマイズ方法やベストプラクティスを調べてください。📚🔍 注意: プラグインのカスタマイズには技術的な知識が必要です。カスタマイズに自信がない場合は、プロフェッショナルな開発者に相談することをお勧めします。👩💼💬 プラグインのカスタマイズを行い、アップデートの影響を受けずに継続して利用できるようにすることで、安心してワードプレスサイトを運営できますね!🎉🚀
お礼
具体的かつわかりやすい方法をありがとうございます! 大変助かります。 その方法を試してみます。 ほんとにありがとうございます!
お礼
返信ありがとうございます。 少しまとめてもう一度返信します。すみません。 ありがとうございます。
補足
プラグインの開発元からhookとfilterをもらいました。 が、それが自分のやりたいことと繋がるかわからず試しています。 メニューを追加: wpee_add_menu_after_profile_menus と書いてあるので、このフックを使用したらメニューが追加できるのかと試しています。 このフックの場所を確認するために簡単なものをfunction.phpに書いてみましたが、何の反応もありません。 function members_list() { echo '<div style="font-size:300%">メンバーリスト</div>'; } add_action('wpee_add_menu_after_profile_menus','members_list'); これは式が間違っているからなのか、 wpee_add_menu_after_profile_menus が場所と関係ないということなのか。 プラグインはWP Datingという有料のものです。 ご迷惑でなければ教えていただけると幸いです。