質問: WordPressのフックについて教えてください。 プラグイン「ContactForm 7」 http://jisakupc-technical.info/web-survice/wordpress/4774/ 上記サイトを参考に添付ファイル名を日本語でも送れるようにしてみました。 「wpmp-config-ja.php」の追加・編集はあっさり終了 (実際は「wpmp-config-.php」のファイル名にしました。) 次に「wp-includes/class-phpmailer.php」の編集 basename($path);をend(explode('/', $path));へ変更 basename($filename);は今のバージョンでは見当たらなかったので編集せず 次にプラグインの「wp-content/plugins/contact-form-7/includes/formatting.php」を編集もあっさり終了 これで確認すると、問題なく日本語ファイル名で送れるようになりました。 ただこの状態ですと、WordPress、及び、プラグインのコアファイルを編集しているため、各々をバージョンアップすると当然初期状態に戻ります。 WordPressだけをバージョンアップさせると、メールそのものが送れませんでした。 ContactForm7だけをバージョンアップさせると、「unnamed-file」のファイル名になり送信されました。 これらがバージョンアップされても日本語ファイル名で送れるようにフックさせたいのですが、イマイチやり方が分かりません。 http://9ensan.com/blog/wordpress/fix-wordpress-apply_filters-add_fl... functions.phpにはどのように記述すればよろしいでしょうか? よろしくお願いします。
回答: Yahoo!知恵袋のWordPressのフックについて教えてください。 と同じ質問ですね。 Teratailのヘルプの「他のサービスにも質問投稿をしたい(してしまった)」に > > teratailでは、マルチポスト*の推奨はしていません。 > > とありますので、ご注意ください。 > > > 各機能の中で do_action( 'HOOK_NAME' ) でフックを実行させている部分や add_action() や add_filter() 等でフックを追加している部分を探す必要があります。 その部分があれば、対象部分に対して、フックを使って処理を入れ替えたり、割り込ませることができますが、この記載がない場合は、フックで処理を変更することはできません。 前後に見つからない場合は、フックが見つかるまで、遡って探してみる必要があります。 PHPMailer は、PHPMailerをそのまま使っているだけですので、PHPMailer 内では、WordPressのフックで、機能の一部を置き換えることはできません。 メール送信を置き換えるプラグイン(例えば、WP Mail SMTP by WPForms)と同じようにメール送信機能全体を置き換えるように制作する必要があります。 Contact Form 7 の場合、ファイル名を決めている部分を置き換えるため、フックで置き換えることができる場所を探していくとwpcf7_file_validation_filter フックで wpcf7_file_validation_filter 関数( modules/file.php )を入れ替えることができますので、この関数を丸ごと入れ替えることになると思います。