以前ご紹介したGarlic.jsをWordPressのプラグイン「Contact Form 7」で利用する方法です。
フォームの <form> タグにカスタムデータ属性(data-persist=”garlic”)を追加する必要があるわけですが、フィルターフックを使う方法とJavaScriptを使う方法の2つの方法をご紹介します。
Garlic.jsのダウンロードや設置については本記事では割愛しますので、詳しくは「ブラウザを閉じても入力内容を保持するGarlic.js」をご覧願います。
JavaScriptを使う方法
まずはショートコードでIDを追加してJavaScriptでデータ属性を追加する方法です。
ショートコードにhtml_idを追加
Contact Form 7では、ショートコードに html_id を追加することで <form> タグにidを追加することが出来ます。
例えば、testForm というidを追加したい場合は、下記のようにショートコードに html_id=”testForm” と追記します。
[contact-form-7 id="358" html_id="testForm" title="テストフォーム"]
JavaScriptでformタグにカスタムデータ属性を追加
そして、JavaScriptの getElementByIdプロパティでフォームのIDを取得し、datasetプロパティでカスタムデータ属性を設定します。
スクリプトはフッターに記入するのが良いと思います。テーマにCocoonを使用している場合は、tmp-userフォルダの footer-insert.php に追記するのが良いと思います。
<script type="text/javascript"> const form = document.getElementById('testForm'); form.dataset.persist = "garlic"; </script>
フィルターフックを使う方法
WordPressの do_shortcode_tag フックを使う方法もあります。
別記事の「ショートコードで出力されるHTMLを変更する do_shortcode_tagフック」で紹介している方法です。子テーマの functions.php に追記します。
カスタマイズ箇所はここだけですし、HTMLとして出力されるので、こちらのほうがスマートですね。
add_filter( 'do_shortcode_tag', function( $output, $tag, $attr ) { if ( 'contact-form-7' === $tag || 'contact-form' === $tag ) { $output = str_replace( '<form ', '<form data-persist="garlic" ', $output ); } return $output; }, 10, 3 );
以上、ご参考になれば幸いです。
ありがとうございます。
コメント