サポート » 使い方全般 » 「ボタンクリック➡プラグインの機能をリセット」したい

  • ユーザー投稿機能を実装する「WP User Frontend」というプラグインを使っています。

    投稿ボタンをクリックし、同じページに「投稿完了しました」と表示させているのですけれど、本来だと同じページからはもう投稿できないようになります。投稿ボタンや投稿フォームがすべて無くなるためです。

    さて今回は、すべて無くなった後に、「もう一度度投稿する」というボタンをクリックすることによって、無くなった投稿ボタンや投稿フォームが復活する。という機能を作る方法を探しています。

    どなたか方法をご存じの方がいらっしゃいましたらご教示頂けませんでしょうか?

    どうぞよろしくお願い致します。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • 「もう一度度投稿する」というボタン

    ヒント

    <form action="" method="post"><input type="submit" value='もう一度度投稿する'></form>

    おはようございます。ヒントをありがとうございます。

    言い忘れました。今回の「もう一度投稿するボタン」は、投稿後に表示されるのではなく、元から表示されています。
    (だから名前は「投稿フォームを開くボタン」の方がよかったですね。)

    そちらのヒントにある方法は、きっと投稿後に表示させる方法、ですよね?(>_<)
    ちょっと今回の目的とは違うかなと思いました。

    また何かヒントがあったらいつでも歓迎です。

    • この返信は2 ヶ月、 2 週間前に  meijinochoco さんが編集しました。

    普通に考えたら投稿前なのに『もう一度投稿する』と表示されてるのは変じゃないですか?

    とりあえず考え方次第でしょう。
    復活とかどのような想定か知りませんが、投稿後にページをリロード出来るようにすれば良いだけの話しです。

    >普通に考えたら投稿前なのに『もう一度投稿する』と表示されてるのは変じゃないですか?
    はい。名前は「投稿フォームを開くボタン」の方がよかったですね。

    投稿後にページをリロード出来るようにする方法についての質問ということになるのですね。別で質問を立てた方がいいのでしょうか?

    はい。名前は「投稿フォームを開くボタン」の方がよかったですね。

    文言の話しではなく見た目なんですが、人それぞれなのでそこはどうでも良いです。

    考え方です。

    「ボタンクリック➡プラグインの機能をリセット」したい

    リセットとか復活とか深く考えるから進まないのでは?

    要は投稿後に投稿フォームを再表示する手段を追加したいだけですよね?
    投稿後にブラウザでページをリロードすれば投稿フォームが再度表示しますよね?
    投稿後にページをリロードさせるためのボタンまたはリンクが出てくるようにすれば済む話しですよね?

    例えばここをクリックすると、このトピックを表示します。
    投稿後にフォームが設置してあるページのリンクか先に記したようなHTMLでボタンのようなものが出てくるようにすれば、それをクリックすればページが再度読み込まれるのでフォームが表示されますが。

    • この返信は2 ヶ月、 2 週間前に  manbo さんが編集しました。
    • この返信は2 ヶ月、 2 週間前に  manbo さんが編集しました。
    • この返信は2 ヶ月、 2 週間前に  Okamoto Hidetaka さんが編集しました。
    • この返信は2 ヶ月、 2 週間前に  Okamoto Hidetaka さんが編集しました。理由: 不必要に攻撃的になる必要がありますか?

    なるほど。ありがとうございます。ということは、投稿後にページをリロード出来るようにする方法についての質問ということになるのですね。別で質問を立てた方がいいのでしょうか?なんどもすみません。

    Tsuyoshi.

    (@tsuyoshiwebcake)

    こんにちは。

    投稿ページがもし、固定ページの場合でしたら、プラグインのフォームの設定画面でRedirect ToTo a pageを選択して、投稿フォームのある固定ページを選択すると投稿後も投稿フォームを表示することが可能です。

    ただし、この場合だと完了メッセージは表示されないので、要件には合わないかもしれません。

    などと書いてるうちに1つ思いついたのですが、完了メッセージにはどうやらHTMLタグを埋め込めるようです。

    もう一度投稿するボタンを初めと投稿後に表示することは難しそうですが、Message to show(完了メッセージ)にリンクやボタンを埋め込んで、同一ページをリロードするようにできるのではないでしょうか?
    (リンクやボタンのテキストをもう一度投稿するにすればよいのかな、と思います。)

    投稿フォームのページのリロードを行なうと、再び投稿フォームが表示されるようになります。いかがでしょうか。

    完了メッセージの例

    Post saved
    
    <input type="button" value="もう一度投稿する" onclick="location.reload();">

    代替案というか、こういう手法が簡単に実装できて良いのではないか?という提案ですので、トピックはこのままで大丈夫ですよ。

    • この返信は2 ヶ月、 2 週間前に  Tsuyoshi. さんが編集しました。

    manboさん
    すみません、完全に同じことを2回書くと明らかにおちょくっている印象を与えてしまうかもしれないと思い、お礼とお詫びを前後に入れておいたのですが、、気遣いが至らずご不快な思いをさせてしまったみたいで、すみません!良いヒントを誠にありがとうございます。

    Tsuyoshiさん
    こんにちは。ご回答ありがとうございます。
    完了メッセージのところにHTMLタグを入れてリロードさせる。なるほど。いいですね。

    ところが、今回は少しそぐわなそうです。

    というのも実は、投稿フォームと投稿完了画面は同じページのポップアップ内に表示されるのですが、そのページにはいくつかの「投稿フォームを開くボタン」があります。

    投稿完了画面のポップアップを閉じて、元のページに戻って、別の「投稿フォームを開くボタン」を押したときに、はじめから入力できるようにしたい。というのが質問の目的だったのですけれど、このときなるべく元のページ全体のリロードというストレスを与えず、投稿フォームの中身だけをリフレッシュしたい。と思っております。

    そんなわけで、「ボタンクリック➡プラグインの機能をリセット」する方法なんてあるのかな。と思い質問した次第です。

    でもひょっとしたらそんな方法はなくて、だからmanboさんもあのようなご回答をしてくださったのかもしれませね。

    いずれにせよ、Tsuyoshiさんから頂戴した案を考えていたわけではないので、とても参考になります。ベターでいいですね♪どうもありがとうございます。

    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    == モデレーターより ==
    下記フォーラム詳細ルールに抵触する投稿がありましたため削除しました。

    B: 以下のような投稿は発見後直ちに削除されます。
    – トピック作成者や他の読者に有意義な情報を提供せず、非建築的な発言(他のユーザーを見下す、悪気のある皮肉を言うなど)のみの投稿は削除されることがあります。

    このフォーラムが存在する唯一の理由は「ユーザーを助けるため」であることを忘れないでください。
    建設的な批判や議論はぜひ行っていただきたいですが、ネガティブな姿勢は慎みましょう。

    meijinochocoさん

    WP User Frontendプラグインを少し触ってみたのですが、初めに仰ってた

    同じページに「投稿完了しました」と表示させている

    ということかから

    投稿フォームと投稿完了画面は同じページのポップアップ内に表示される

    というポップアップ画面を使用しているということが把握できず、ページをリロードする手法を提案しました。

    ポップアップを開く「投稿フォームを開くボタン」ってご自分で設置されたものではなく、プラグインの機能なんでしょうか?
    投稿完了後、完了メッセージがポップアップ画面に表示され、ポップアップを閉じたら元のページの投稿フォームを開くボタン」は消えるんでしょうか。

    どこまでプラグイン標準の機能かわからず、少し難しくなってきました。

    投稿完了後、ポップアップ画面を閉じて親画面がそのまま表示されているのなら、常に「投稿フォームを開くボタン」が元のページに表示されていれば解決な気もするのですが…。

    Tsuyoshiさん

    なんども親身に相談に乗っていただき、深く、、感謝いたします。m(_ _)m
    情報が欠けていて申し訳ございません。

    >常に「投稿フォームを開くボタン」が元のページに表示されていれば解決な気もするのですが…。

    について回答させて頂きます。

    ・・・

    【概略の回答】
    概略だけ回答しますと、投稿完了後に「投稿フォームを開く」ボタンをクリックしても、そのフォームには投稿完了メッセージが表示されてしまったままで、もう一度投稿するためにはおっしゃるようなリロードしか思いつかないのが現状です。

    けれど、リロードよりも、投稿フォームだけがリセットされるという機能の方がストレスなく好ましいかなと思い質問いたしました。

    ・・・

    【詳細な回答】

    以下、長くなってしまい大変恐縮ですが、

    >どこまでプラグイン標準の機能か

    について、大体の流れを書いてみます。お手すきの折にご覧いただければ幸いです。

    まずポップアップはプラグイン(WPUF)の機能ではなく、下記のように自作いたしました。

    WPUFは[wpuf_form id=”100″]などのショートコードで投稿フォームを設置できるので、ポップアップを表示するページのテンプレートにそのショートコードを張り付けています。テンプレートは下記のような感じです。

    
    <!-- ページコンテンツ -->
    <div class="content">
      <div class="neko">
        <div class="neko-inner">ネコは耳がかわいい</div>
        <div class="btn_hiraku">投稿フォームを開く</div>
      </div>
      <div class="inu">
        <div class="inu-inner">イヌは声がかわいい</div>
        <div class="btn_hiraku">投稿フォームを開く</div>
      </div>
    </div>
    
    <!-- 投稿フォーム -->
    <div class="popup">
      <div class="popup-inner">
        <?php echo do_shortcode('[wpuf_form id="100"]'); ?>
      </div>
      <div class="btn_tojiru">閉じる</div>
    </div>
    
    <!-- 投稿フォーム最初は非表示 -->
    <style>
    .popup {
      display: none:
    }
    </style>
    
    <!-- 投稿フォーム表示切替 -->
    <script>
    (function($){
    
      // 投稿フォーム表示
      $('body').on("click",'.btn_hiraku',function(){  
        $('.popup').css('display', 'block');
      });
    
      // 投稿フォーム非表示
      $('body').on("click",'.btn_tojiru',function(){  
        $('.popup').css('display', 'none');
      });
    
    })(jQuery);
    </script>
    

    このようになっております。流れを書きますと、

    ➀ページ(.content)にある「投稿フォームを開く」をクリック。
    ➁投稿フォーム(.popup)がポップアップで表示。
    ➂投稿すると、そのポップアップ内に投稿完了メッセージが表示。
    ➃「閉じる」をクリックすると、元のページ(.content)に戻る。

    という流れです。

    ただし、元のページ(.content)には「投稿フォームを開く」ボタンが複数あるため、さっき投稿したけどもう一回投稿したいな、というケースに対応するためには、「投稿フォームを開く」ボタンをクリックしたときに、投稿フォームがリセットされている必要があるのです。

    そうでないと、冒頭に書いたように、投稿フォームの中には➂の投稿完了メッセージが表示されたままだからです。

    以上のような理由から、

    >常に「投稿フォームを開くボタン」が元のページに表示

    されてははいるものの、投稿完了後に開いたフォームからは投稿できない。という状態なのです。

    長くなってすみません。。(-_-;)

    土日のマッタリモードのお時間にでもごゆるりとお返事いただけましたら幸いでございます。

    ちょっと微妙かもしれないんですが例えば。
    以下はフォーム取得を入れてみた感じですが、HTMLに埋め込むよりJSで取得できた方がいいかもしれません。

    ちなみに提示していただいたコードですと、ポップアップ画面の投稿フォームで投稿した時にPOST送信されて、親ページもリロードされて完了メッセージ出ないなんて、そんなことなはいでしょうか?なにか制御されてますか?

    Ajaxで投稿してたり、ポップアップ画面の表示は実際は違う方法とかなら良いのですが…。

    <!-- ページコンテンツ -->
    <div class="content">
      <div class="neko">
        <div class="neko-inner">ネコは耳がかわいい</div>
        <div class="btn_hiraku">投稿フォームを開く</div>
      </div>
      <div class="inu">
        <div class="inu-inner">イヌは声がかわいい</div>
        <div class="btn_hiraku">投稿フォームを開く</div>
      </div>
    </div>
    
    <!-- 投稿フォーム -->
    <div class="popup">
      <div class="popup-inner">
      </div>
      <div class="btn_tojiru">閉じる</div>
    </div>
    
    <div class="hidden-form">
      <?php echo do_shortcode('[wpuf_form id="100"]'); ?>
    </div>
    
    <!-- 投稿フォーム最初は非表示 -->
    <style>
    .popup,
    .hidden-form {
      display: none:
    }
    </style>
    
    <!-- 投稿フォーム表示切替 -->
    <script>
    (function($){
    
      // 投稿フォーム表示
      $('body').on("click",'.btn_hiraku',function(){  
        get_form();
        $('.popup').css('display', 'block');
      });
    
      // 投稿フォーム非表示
      $('body').on("click",'.btn_tojiru',function(){  
        $('.popup').css('display', 'none');
      });
    
      // 投稿フォームを取得
      function get_form() {
        $('.popup .popup-inner').html($('.hidden-form').html());
      }
    
    })(jQuery);
    </script>

    初めに具体的な内容やコードを提示していただけると、今回のような認識の違いやすれ違いをもっと軽減できるかもしれませんね。

    こんばんは。お世話になっております。
    遅くなってしまって申し訳ございません。

    できました。確かに投稿フォームはリセットましたね。
    どうもありがとうございます。ただ一方で、、(>_<)

    今回は完了メッセージが表示されなくなってしまったようです。。

    テストサイトに設置してみました!

    ▼【元々の方法】
    http://ochan.info/part1/
    →完了メッセージ表示だけど、投稿フォームリセットされず

    ▼【今回の方法】
    http://ochan.info/part2/
    →完了メッセージ表示されず、投稿フォームリセットされる

    ・・・

    p.s.
    ちなみに、

    >なにか制御されてますか?

    についてですけれど、特に何もせず、同じポップアップ内で完了メッセージは表示されておりました。
    それが上の【元々の方法】です。投稿すると、同じ画面で完了メッセージ(投稿先のURLですが)が表示されていると思います。

    【今回の方法】にすることで、はじめて完了メッセージが表示されなくなったという状況です。

    たびたびすみません。

    どうやら【今回の方法】ですと、投稿自体ができなくなっていたようです。

    なので、「完了メッセージが表示されない」のは当然で、さらに「投稿フォームがリセットされている」のではなくそもそも投稿できていないだけだった。ということのようです。

    きちんと確認せず返信してしまって失礼いたしました。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • このトピックに返信するにはログインが必要です。