【WordPress + Contact Form7 + Android】AndroidのLINEのブラウザ(Webview)で「添付ファイル」ボタンが動かない(input type= “file”)

LINEでURLを送った時に、
そのURLをタップすると、LINEのアプリ内でWebが閲覧できますよね。

このLINEアプリ内でWebを開いたときに、 WordPressとContact Form7を使って作ったメールフォームの、

「ファイル添付ボタン」がクリックしても反応しない、動かないという現象がありました。

調べるのに時間を使ってしまったので、メモしておきます。

※LINEアプリ内でWebを閲覧する事を、以下「LINEアプリ内ブラウザを使う」と表現します。

原因:accept属性の設定が拡張子の場合、動作しない。MIMEで設定すること。

LINEアプリ内ブラウザではaccept属性の指定はMIMEで設定をしてあげる事で、動作するようになりました。

他メールフォームを調べた所、
LINEアプリ内ブラウザを使ってもinput type=”file”自体は正しく動作しておりましたので、
Contact Form7で吐き出したhtmlと見比べてみました。

Contact Form7では「拡張子」で設定しています。

accept=".jpg, .png"

しかし、LINEアプリ内ブラウザで動作したinput type=”file”は「MIME」で設定していました。

accept="image/jpeg, image/png, image/gif"

プラグインContact Form7の改修内容

今回、代替プラグインを探すかなど、いろいろ検討したのですが、
急ぎという事もあり直接プラグインに手を入れています。

プラグインはご存知の通りアップデートが必要なので、この方法は推奨しません。

改修ファイル:plugins/contact-form-7/modules/file.php

バージョン:5.1.3

/* コメントアウト
$atts['accept'] = wpcf7_acceptable_filetypes(
$tag->get_option( 'filetypes' ), 'attr' );
*/

//これを追加
$atts['accept'] = 'image/jpeg,image/png,image/gif';

また、コードを読んで頂いた通り、管理画面でaccept属性を設定できる機能を壊しています。柔軟性が低下中です。

ですので、あくまでも何がどうなって(今回は)解決したかという事だけを覚えておけたらよいかと思います。