サポート » 使い方全般 » メールフォームから送信した内容を管理画面で置換して表示したい。

  • 解決済 msthings

    (@msthings)


    Trust Formというメールフォームが作れるプラグインを使用しています。
    メールフォームから送った内容を管理画面で管理できるプラグインです。

    このメールフォームから送信した内容を置換して管理画面に表示させたいのですが、どのようにすればよいでしょうか?

    例えば「名前」というフォームに「稲垣」と入力して送信したとして、管理画面には「001稲垣さん」という風に置換して表示させたいです。

    置換するタイミングは送信する前でも送信した後でもいいのですが、送信者にわからないようにしたいです。

    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • 検証はしておらずプラグインのコードを読んだだけですが…

    プラグイン Trust Form にフィルター tr_entry_manage_posts_custom_column が用意されており、お問い合わせ内容画面(リスト表示)の内容がフィルターに通されるので、置換する関数をフックすれば内容を置換できると思います。
    フィルターは trust-form.php の1083行目にあります。

    $this->entries_data = apply_filters( 'tr_entry_manage_posts_custom_column', $this->entries_data, $this->id );

    entries_data を var_dump で見ると例えば次のような内容が入っていました。

    array(1) {
      [0]=>
      array(5) {
        ["ID"]=>
        int(0)
        ["entry_0"]=>
        string(3) "あいうえお"	// 1項目めの内容
        ["entry_1"]=>
        string(13) "foobar@exmaple.jp"	// 2項目めの内容
        ["entry_2"]=>
        string(3) "わーどぷれす"	// 3項目めの内容
        ["date"]=>
        string(19) "2016/04/21 09:44:46"
      }
    }

    しかしお問い合わせ内容の個別ページにはフィルターが用意されていないので、置換するにはプラグイン本体のコードを修正する必要があると思います。admin/entry.php の下記の部分です。

    $responce = get_post_meta( $form, 'answer' );   // お問い合わせ内容を取得
    // 中略
    foreach ( $responce[$entry]['title'] as $key => $e ){
      // $e が項目の見出し
      // $responce[$entry]['data'][$key] が項目の内容
    ?>
    <tr><th scope="row"><?php echo esc_html($e); ?></th><td><?php echo str_replace( "\n", '<br />', esc_html($responce[$entry]['data'][$key])); ?></td></tr>
    <?php
    }

    gblsm様!

    詳細な回答ありがとうございます!
    感謝感激雨あられですm(_ _)m
    教えて頂いた以下の部分をゴニョゴニョすれば行けそうな感じがしました!
    あとで検証してみたいと思います!
    <tr><th scope=”row”><?php echo esc_html($e); ?></th><td><?php echo str_replace( “\n”, ‘
    ‘, esc_html($responce[$entry][‘data’][$key])); ?></td></tr>

    ただ一つ質問があります。
    上記の部分ですと閲覧というリンクをクリックした個別の問い合わせ内容が表示されるページで変更されるようです。

    できれば、一覧ページで置換して表示したいと思っているのですがこれは難しそうでしょうか?
    お時間がある時にでも答えて頂けると幸いです。

    一覧ページでの置換はフィルター tr_entry_manage_posts_custom_column で行えると思います。データベース内容を書き換えるわけではなく表示だけを変えることになります。

    個別の問い合わせ内容のページには、このフィルターは効きません。そのため個別ページのコード抜粋を示したわけです。

    gblsm様

    すみません。
    よく読んでおりませんでしたm(_ _)m

    助かりました!
    ありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「メールフォームから送信した内容を管理画面で置換して表示したい。」には新たに返信することはできません。