スポンサードリンク


ContactForm7の添付ファイルに日本語名を使う方法!WordPressのお問い合わせ画面機能をカスタマイズ!

    ContactForm 7 添付ファイル 文字化け

    WordPressでメールのお問い合わせページを作るプラグインで「ContactForm 7」という超有名なプラグインがあります。

    通常、お問い合わせページを構築するとなると、入力欄のレイアウト・デザインや入力チェックなどどうしてもプログラムで制御しなくてはならず、工数もかかってしまいますよね。

    ContactForm 7を使えば、非常にカスタマイズ性がある上に、お問い合わせページを簡単に早く作ることができるのでかなり便利です。WordPressに慣れてしまっている人にとっては十分満足のいく機能が詰まっているのも特徴です。

    そんなわけで私もWordPressでお問い合わせページを構築する際には使っています。

     

    ContactForm 7で送信した添付ファイルに日本語が使えない?

    ずっと気になってはいたんですが、ContactForm 7って添付ファイルを送信することもできるじゃないですか。

    何ですが添付ファイルのファイル名に日本語が含まれていると、
    WordPress側で自動的に英数字に変換が行われてしまいます。

    試しに添付ファイルが含まれるメールを受信してみますと、以下のようなファイル名になってしまいます。

    ContactForm 7 添付ファイル 文字化け

    つまり、標準では添付ファイルの名前に日本語名が使用できないということです。

     

    日本語名が使えないと何が困るか

    単にウェブサイト訪問者さん向けのメールフォームで、送信先が私なら添付ファイルの名前だけが文字化けしているのなら、さほど問題はありません。

    ところが、第三者の方に向けてメールを飛ばす場合はさすがに困りますよね。

    特に業務システムの一環としてWordPressを申請ページなどに採用していると、大問題だと思います。

    そんなことで今回、ContactForm 7の添付ファイル機能でファイル名が文字化けせず「日本語名」を利用できるようにする方法をまとめましたので、お困りの方は是非ご覧下さい。

     

    添付ファイル名を文字化けさせず日本語を使えるようにする方法

    ContactForm 7を導入しただけでは添付ファイル名に「日本語」を使用することができない為、WordPressのシステムファイルと「ContactForm 7」のプラグインファイルの一部を編集することにより対応します。

     

     検証環境

    • Apache: 5.6.3
    • WordPress: 4.5.2
    • ContactForm 7 プラグイン: 4.4.2
    • WP Multibyte Patch プラグイン: 2.6

    今回私が動作検証したシステム環境は上記の通りです。

     

     作業手順

    • 「WP Multibyte Patch」プラグインでメールの文字コードをUTF-8に変更
    • WordPressシステムのメーラーの設定ファイルを書き換える
    • 「ContactForm 7」プラグインファイルを書き換える
     上記の作業はすべて自己責任で行なって下さい。

     

    「WP Multibyte Patch」プラグインでメールの文字コードをUTF-8に変更

    WordPressインストール時に標準で導入されているプラグイン「WP Multibyte Patch」。

    日本語のマルチバイト文字をWordPressで扱う際に有効化すべきプラグインで、たいていの方はほぼ無意識で有効化していると思います。

    ちなみに「WP Multibyte Patch」の有効無効問わず、添付ファイル名は日本語が使用できません。

    実は今回このプラグインを利用します。インストールされていない方は事前にご用意下さい。

    まず、「wp-content/plugins/wp-multibyte-patch/wpmp-config-sample-ja.php」ファイルをコピーし、「wpmp-config-ja.php」という名前に変更します。

     

    スポンサードリンク

     

     103行目あたり

    と記述された一行を

    に変更します。

     58行目あたり

    日本語ファイル名をmd5ハッシュ値に変換する処理を無効にします。

    と記述された一行を

    に変更します。

     wpmp-config-ja.phpを/wp-content直下に移動させます

     

    WordPressシステムのメーラーの設定ファイルを書き換える

    WordPressのシステムでPHPのメーラーの設定ファイルがあります。

    場所は「wp-includes/class-phpmailer.php」です。このファイルを書き換えます。

     basename($path) という箇所をすべて変更

    と記述された箇所を

    に書き換えます。

     basename($filename) という箇所をすべて変更

    と記述された箇所を

    に書き換えます。

     

    「ContactForm 7」プラグインファイルを書き換える

    ContactForm 7プラグイン本体のファイルも書き換えます。。

    場所は「wp-content/plugins/contact-form-7/includes/formatting.php」です。

     292行目あたり(wpcf7_antiscript_file_name関数内)

    と記述された一行を

    に変更します。

    以上で作業は完了です。

    ContactForm 7で作成したお問い合わせページで添付ファイルを追加してメールを送信してみて下さい。日本語名が使えるようになっていると思います。

     

    メディアからアップロードした日本語名ファイルが文字化け

    この記事の手順通りソースファイルを変更し、テスト運用していたところ、思いもしない不具合が発生しましたので報告です。

    不具合は「メディア」からアップロードした日本語名のファイルが、サーバ側で文字化けしてしまうというものです。

    本来、日本語名が使われているファイルに対して文字化けしないように、WordPressが自動生成した英数字に置き換える処理が行われます。通常はmd5ハッシュ値に変換する処理となっていますが無効にしました。

     

    これだけなら文字化けは起きませんが、ファイルの保存先のファイルシステムの文字コードがUTF-8ではない場合にファイル名が文字化けしてしまいます。

    この不具合を解消する方法を見つけましたので、以下の手順も行なって下さい。

     

    場所は「wp-admin/includes/file.php」です。

     367行目あたり

    と記述された一行を

    に変更します。

     371行目あたり

    と記述された一行を

    に変更します。

      The following two tabs change content below.
      よっき プロフィール画像
      パソコンが大好きな青年。職業はプログラマ/SE。 フリーランスとしてウェブサイトの構築・保守の業務に従事。専門学校とパソコンスクールで講師も担当。幼少期からパソコンが大好きで、趣味がそのまま仕事に転じた。自作PCの魅力に惹かれたのは学生時代の頃。自作PC専門ブログで、お得な情報を紹介しています。

      スポンサードリンク


      5 Responses to “ContactForm7の添付ファイルに日本語名を使う方法!WordPressのお問い合わせ画面機能をカスタマイズ!”

      1. 勉強中 より:

        追記されていました、
        「メディアからアップロードした日本語名ファイルが文字化け」
        についてですが、
        何というファイルを直せばよいのでしょうか?
        上の3つのファイル上には、ソースが見当たりませんでしたもので・・・。
        教えて頂けるとうれしいです。
        宜しくお願いいたします。

        • よっき プロフィール画像 よっき より:

          大変失礼致しました。
          修正ファイルのパスは「wp-admin/includes/file.php」となります。

          記事の方も追記させて頂きました。
          ご連絡頂きありがとうございます。

          • 勉強中 より:

            こちらこそ、早々にご回答頂きまして、ありがとうございました。
            しかし、何がいけないのか、ポイント2の作業を行いましたが、
            残念なことに日本語ファイルの文字化けは直りませんでした・・・。

            検証環境

            Apache: 2.4.x
            WordPress: 4.7
            ContactForm 7 プラグイン: 4.6
            WP Multibyte Patch プラグイン: 2.8.1

            もう少し勉強します。
            ありがとうございました。
            m(_ _)m

      2. 教えて より:

        ContactForm 7の添付ファイルを日本語ファイル名で送りたく、ググっていたところ、ここにたどり着きました。
        現在のバージョンですと、若干修正箇所が違うようですが、無事、日本語ファイル名で送れます。
        ただ、WordPressやContactForm7をバージョンアップすると、ファイルがデフォルトになってしまいますよね・・・
        フックをfunctions.phpに記述して、バージョンアップされても大丈夫なようにできますかね?

      3. 情報ありがとうございます より:

        大変ありがたい記事をありがとうございます!
        ファイル名を日本語化できました!

        ただ、ファイル名を日本語化するにあたって、
        WP Multibyte Patchの変更の箇所の、
        『wpmp-config-ja.phpという名前に変更』とありましたが、
        このファイル名では私は日本語名に変わりませんでした。
        jpを取って、wpmp-config.phpにしたら無事日本語化できました。

      よっき へ返信する




      CAPTCHA


      このページの先頭へ