[WP]MW WP Formのショートコードが表示されてしまう場合の対処法
2018年2月2日
WordPressでお問い合わせフォームを使用する場合MW WP Form機会が多いのですが、設定したフォームが表示されずにショートコードが表示されるという不具合が発生したので調べてみた。
ショートコードが表示されるパターン
いつも通りMW WP Formでフォームを作成し、投稿ページにショートコードを記載する。
[mwform_formkey key=”フォームNo”]
シングルページの表示では指示通りのフォームが表示される。
しかし、投稿ページのアーカイブ(一覧)で表示させるとショートコード([mwform_formkey key=”フォームNo”]のまま)が表示される。
これは困った。。。
今回メンテナンスしやすいように、投稿ページで作成したページをトップページに全て読み込ませて載せているので。(サービス情報、手続き内容、セミナー情報、申し込みフォームなどをそれぞれ投稿ページで作成して1ページで表示されるようにしているので)
まぁ、こんな使い方はマイナーしないかもしれないけれど、フォームを「フォームページ」としてではなく、各ページのコメント投稿的な感じで使用する人もいるのではないかなぁ。(まぁコメント欄はあるけれど)
ショートコードが表示を回避する方法
そんなこんなで、フォーム側のシステムをいじることで何とかならんかなぁと試したけれど私には難しいので、ページを強制的に読み込ませてみることにした。
フォームを表示させたいページのphpに下記コードを入れて直接フォームを表示させる。
<?php echo do_shortcode('[mwform_formkey key="フォームNo"]'); ?>
フォームはちゃんと表示されたけれど、これだと表示場所などの変更がクライアントサイドでできなくなってしまう。
(投稿ページの並び順がトップページの並び順にしているので、phpに直書きだと一番上か一番下にフォームを表示させるしかできない)
それも困るので、固定ページでフォームを作成し、これを投稿ページに読み込みさせてさらにトップページにアーカイブさせるという方法をしてみた。(ややこしい・・・)
ショートコードが表示を回避する方法2
かなり力技だし検索で固定ページもhitしちゃうかもだしWEBページをWEBページに読み込みさせるなんてスパムっぽい行為だから、クライアントさんにちゃんと説明した上で実装してね。
(1) 固定ページにMW WP Formショートコードを記載しフォームページを作成。
[mwform_formkey key=”フォームNo”]
プレビューでちゃんとフォームが表示されているのを確認。
(2) function.phpに下記を記載。
function show_file_func( $atts ) {
extract( shortcode_atts( array('file' => ''), $atts ) );
if ($file!='')
return @file_get_contents($file);
}
add_shortcode( 'show_file', 'show_file_func' );
(3) 投稿ページに下記を記載。
[show_file file=”固定ページのフォームURL”]
固定ページに作成したフォームを読み込みさせると、シングルページでも投稿ページのアーカイブ(一覧)表示でもフォームは正常に表示された。
contact form7では?
ちなみに、contact form7だとどうかなぁと試してみた。
[contact-form-7 id=”フォームNo”]
シングルページでも投稿ページのアーカイブ(一覧)表示でもフォームがちゃんと表示された。
え・・・じゃぁ、MW WP Formのバグかなぁ。
じゃぁ、そのうちこんな回避方法しなくても大丈夫になるかな。。。