サポート » プラグイン » MW WP Formの問い合わせデータでCSVにゼロが保存されない

  • 解決済 kotetsu

    (@kotetsu)


    WordPress 4.8.1でMW WP Formの3.2.1を使用しております。
    フォームにて
    [mwform_number name=”element-1″ step=”0.1″]
    というタグを配置し、「問い合わせデータをデータベースに保存」をチェックした状態にしています。
    フォームにて値を0にし、送信した場合に、

    ・問い合わせデータの一覧画面では0の値が表示さない
    ・問い合わせデータの詳細画面では0の値が表示される
    ・届いたメール上では0の値が表示される
    ・ダウンロードしたCSVでは0の値が表示さない

    という現象が起きております。こちらはバグなのでしょうか。
    CSVでも0の値が書き込まれてほしいのですが、どなたか解決策をご存知ではないでしょうか。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • classes/models/class.csv.php 内のメンバー関数 get_rows() が下記のようになっているので

    foreach ( $headings as $key => $value ) {
      if ( $key === 'response_status' ) {
        // 中略
      } elseif ( isset( $post->$key ) ) {
        $post_meta = $post->$key;
        if ( $Contact_Data_Setting->is_upload_file_key( $post, $key ) ) {
          // 中略
        } else {
          $column = ( $post_meta ) ? $post_meta : ''; // ※※ここで空文字列になる
        }
      }
      $columns[$key] = $column;
    }
    

    とりあえず ※※ を次のように修正すればゼロを書き出せます。

    if ( '0' === $post_meta ) $column = $post_meta; else
    $column = ( $post_meta ) ? $post_meta : '';
    
    トピック投稿者 kotetsu

    (@kotetsu)

    うまくいきました!ありがとうございました。
    ただ、やはりプラグインをいじると直せることはわかりますが、バージョンアップなどで戻ってしまいますので、本当は作者の方に対応していただけるとうれしいですね。
    フォームの集計等でcsvでゼロの値を使いたいというケースは結構あると思います。

    よかったですね。もうひとつ

    問い合わせデータの一覧画面では0の値が表示されない

    については classes/controllers/class.contact-data-list.php のメンバー関数 add_form_columns() の中が次のようになっているので

    if ( $Contact_Data_Setting->is_upload_file_key( $post, $column ) ) {
      // 中略
    } elseif ( $post_meta ) {  // ※※これが '0' なら else へ分岐。
      $value = esc_html( $post_meta );
    } else {
      $value = ' ';
    }
    

    ※※ の条件を次のように修正すると 0 が表示されます。
    $post_meta || '0' === $post_meta

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「MW WP Formの問い合わせデータでCSVにゼロが保存されない」には新たに返信することはできません。