expexp.jp

WordPress

【WordPress】MW WP Formのお問い合わせデータをダッシュボードに表示したい2

前回の「【WordPress】MW WP Formのお問い合わせデータをダッシュボードに表示したい」のつづきになります。ダッシュボードに最新の問い合わせデータを表示するまでをご紹介しましたが、さらに問い合わせ件数と、ついでにグラフへのリンクを表示する例を紹介します。

需要あるかなと言いつつ。。。

ダッシュボードにデータを表示するためのウィジェットを追加

前回同様、特に難しいことはしませんが、functions.phpに記述できる知識は必要です。紹介するコードも前回のコードを流用します。

MW WP Formでの設定

設定のメタボックスで「問い合わせデータをデータベースに保存」にチェックが入っているか確認してください。

functions.php

お問い合わせデータをダッシュボードに表示するfunctions.phpの記述例です。XXXの部分はフォーム識別子になります。

使用するフックはwp_dashboard_setupで、APIにダッシュボードにウィジェットを追加できるwp_add_dashboard_widgetを使用します。

// ダッシュボードにMW WP Formの問い合わせデータを表示する関数
add_action( 'wp_dashboard_setup', function() {

  /* 問い合わせデータをウィジェットに追加する関数
  wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) */
  wp_add_dashboard_widget( 'mwform_save_data_widget', 'お問い合わせデータ', function() {

    /* ここから$callback部分 */
    /* 問い合わせデータの投稿タイプ */
    $mwf_post_type = 'mwf_XXX';

    /* get_posts関数用の引数を設定。サンプルでは最新5件表示 */
    $args = array(
      'post_type' => $mwf_post_type,
      'posts_per_page' => 5,
    );

    /* 引数をセットしてget_posts! */
    $save_data = get_posts( $args );

    /* お問い合わせデータが空かどうかチェック */
    if( !empty( $save_data ) ) {

      /* ラッパーはとりあえずリストで */
      $output = '<ul>';
      
      /* タイトルだけだと寂しいのでアイコンも表示 */
      $icon = '<i class="dashicons dashicons-admin-page"></i> ';

      /* 問い合わせデータをループ! */
      foreach( $save_data as $data ) {
        $output .= '<li>'.$icon.'<a href="post.php?post='.$data->ID.'&action=edit">'.$data->post_title.'</a><li>';
      }

      /* ラッパー閉じ */
      $output .= '</ul>';

      /* 問い合わせデータのオブジェクトを取得 */
      $mwf_posts = wp_count_posts( $mwf_post_type );

      /* オジェクトから公開済み件数を取得 */
      $mwf_post_count = $mwf_posts->publish;

      /* 問い合わせ件数を表示用に成形 */
      $mwf_post_count_op = '<a href="edit.php?post_type='.$mwf_post_type.'">'.$mwf_post_count.'件</a>';


      /* ついでにグラフへのリンクも成形 */
      $mwf_chart = '<a href="edit.php?post_type=mw-wp-form&page=mw-wp-form-chart&formkey='.$mwf_post_type.'">グラフを表示</a>';

      /* 問い合わせ件数とグラフを表示 */
      $output .= '<p>問い合わせ件数: '.$mwf_post_count_op.' / '.$mwf_chart.'</p>';
    }

    /* 残念ながらお問い合わせデータがない場合 */
    else {
      $output = 'お問い合わせデータはありません。';
    }

    /* あうとぷっと! */
    echo $output;

    /* ここまで$callback部分 */

  } );
} );

新しく記述したところ抜粋。

カスタム投稿タイプは流用するので、前回は$argsの中へ記述していたものを変数へ代入しています。

/* 問い合わせデータの投稿タイプ */
$mwf_post_type = 'mwf_XXX';

/* get_posts関数用の引数を設定。サンプルでは最新5件表示 */
$args = array(
  'post_type' => $mwf_post_type,
  'posts_per_page' => 5,
);

最後の問い合わせ件数を出力する部分のコードです。問い合わせデータのオブジェクトを取得するwp_count_posts()関数が追加されています。

/* 問い合わせデータのオブジェクトを取得 */
$mwf_posts = wp_count_posts( $mwf_post_type );

/* オジェクトから公開済み件数を取得 */
$mwf_post_count = $mwf_posts->publish;

/* 問い合わせ件数を表示用に成形 */
$mwf_post_count_op = '<a href="edit.php?post_type='.$mwf_post_type.'">'.$mwf_post_count.'件</a>';


/* ついでにグラフへのリンクも成形 */
$mwf_chart = '<a href="edit.php?post_type=mw-wp-form&page=mw-wp-form-chart&formkey='.$mwf_post_type.'">グラフを表示</a>';

/* 問い合わせ件数とグラフを表示 */
$output .= '<p>問い合わせ件数: '.$mwf_post_count_op.' / '.$mwf_chart.'</p>';

関連記事