前回の「【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>';