サポート » 使い方全般 » 固定ページでdo_shortcodeしてもフォームが表示されない

  • 解決済 ryo000

    (@ryofd)


    タイトルのままですが、カスタムフィールドに入力してあるショートコードを、do_shortcodeしてもapply_filters(‘the_content’)しても、ショートコードがそのまま表示されるだけで、フォームが表示されません。
    何か間違っているのでしょうか?

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • トピック投稿者 ryo000

    (@ryofd)

    あ、タグには入れてますがMW WP Formに関してです。

    do_shortcodeはテンプレートでショートコードを使用するためのものです。
    [mwform_formkey key="xxxx"]のようなショートコード(フォーム識別子)を、固定ページの本文欄にそのままペーストすればフォームが表示されないでしょうか?

    トピック投稿者 ryo000

    (@ryofd)

    ikaringさん

    ショートコードを本文欄に入れれば表示されるのですが、本文以外の場所に表示したいので、カスタムフィールドを使って入力させたものを、page.phpで別の場所で呼び出しているのですが、表示されない状況です。

    echoはされてますよね?
    こちらではpage.phpに下記追加で確認できてます。

    <?php echo do_shortcode( '[mwform_formkey key="xxxx"]' ); ?>

    もしかしてですけど、ショートコードがそのまま表示されるということは、MW WP Formが無効化されてないですか?

    トピック投稿者 ryo000

    (@ryofd)

    ikaringさん

    もちろんechoしてますし、プラグインを有効にもしています。
    本当にわけがわからずに困っています、、、

    過去スレで作者の方が解答されていますが、get_headerは使われていますでしょうか。
    https://ja.forums.wordpress.org/topic/35703?replies=3

    その他、考えられることは、

    WP_DEBUGをtrueにしてエラーの表示とかはないでしょうか。

    ほかのプラグインを停止したり、テーマをデフォルトテーマにしたりということは確認されていますか。

    可能な範囲でコードを見せていただけるとなにか手がかりが見つかるかもしれないです。

    トピック投稿者 ryo000

    (@ryofd)

    ikaringさん

    もちろんget_headerは使っています。
    そもそも通常の本文欄に入れれば使用できているので、問題ないと思っています。
    本文欄に入れずにテンプレートなどでショートコードをそのままechoするとだめなのです。

    なんだか、ikaringさんにも貴重な時間を使っていただいているのが申し訳なくなってきました。
    とりあえず、もう少し自分で触ってみます。
    ありがとうございました。

    トピック投稿者 ryo000

    (@ryofd)

    なんとか自己解決したのでご連絡します。

    質問時にも書きましたが、MW WP FORMを利用して、カスタムフィールドにショートコードを保存し、それをdo_shortcodeしても表示されない現象でした。

    カスタムフィールドには「[mwform_formkey key=”???”]」をそのまま保存して、page.phpで取得したものをdo_shortcodeしたのですが、これではショートコードがそのまま表示されてしまい、うまくいきませんでした。
    そのため、以下のような作業を行いました。

    1.そもそもdo_shortcode(‘[mwform_formkey key=”???”]’)したら表示されるのか? → OK

    2.カスタムフィールドに入力されたショートコード「[mwform_formkey key=”???”]」を変数に取得して、do_shortcode → NG

    3.「[mwform_formkey key=”???”]」を変数に入れて、do_shortcode → NG

    4.「 key=”???”」の数字のみをカスタムフィールドに入れて取得し、do_shortcode(‘[mwform_formkey key=”‘.$key.'”‘) → NG

    5.4の方法で出力の方法をdo_shortcode(“[mwform_formkey key=\”{$key}\””) → OK

    というような結果に終わりました。

    ただし、上記の方法で出力してもフォームとして正常に動作しませんでした。
    メールも送信できないし、エラーチェックもできませんでした。

    上記の理由から、この方法でのMW WP FORMの利用を断念しました。
    ikaringさん、いろいろとありがとうございました。

    ishihara takashi

    (@ishihara-takashi)

    はじめまして。
    MW WP FORMの場合、$post->post_content 、
    つまり本文欄にショートコードがあるかどうかを
    実行の判断基準にしているようなので、
    そもそもdo_shortcodeでの出力はむずかしいかと思います。

    ikaring

    (@ikaring)

    ikaring

    (@ikaring)

    すいません。
    普通にpage.phpやsingle.phpに記述したら表示されて、条件がよく分からなくなってしまったので、さきほど投稿したコメントを削除しました。

    ryo000さま、
    申し訳ないです。「カスタムフィールドに入力してある…」の主旨がよく分かっていなくて、その部分を飛ばして読んでいたために的はずれな回答をしていたようです。

    解決済みとのことですが、当方のテスト環境で表示できた際に追加したコードは次のとおりです。4,5の方法で書かれているものに閉じカッコ ] がないのは関係ないでしょうか?

    <?php
    	$key = $post->form_key;//form_keyがカスタムフィールド名で数値を入力しています
    	echo do_shortcode(do_shortcode('[mwform_formkey key="'.$key.'"]'))
    ?>

    作者です。
    MW WP Form のフォームを表示するためのショートコード(フォーム識別子)は、通常のショートコードと違い「ページが表示される前」にバリデーションチェックやリダイレクト処理をするためにも使用されます。

    そのため、テンプレートが読み込まれて処理(画面に表示)されたときに関数経由やファイルインクルードでフォーム識別子が読み込まれても、すでにMW WP Formの解析処理が済んでしまっているのでフォームは表示できません。その解決策として、読み込もうとしているテンプレートの「コード自体」を直接読み込み、そこにフォーム識別子の記述があったらMW WP Formの処理を行うようにしています。

    よって、

    1.そもそもdo_shortcode(‘[mwform_formkey key=”???”]’)したら表示されるのか? 

    だけが正しく動作する、ということになります。

    http://plugins.2inc.org/mw-wp-form/faq/#faq-149

    トピック投稿者 ryo000

    (@ryofd)

    遅くなり申し訳ありません。
    ありがとうございました。
    これは仕方ない事だとあきらめて、別の方法を模索したいと思います。

    これで、このトピックは解決済みにしたいと思います。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • トピック「固定ページでdo_shortcodeしてもフォームが表示されない」には新たに返信することはできません。