WordPress のダッシュボードに情報を表示するプラグインを作成する方法です。

まず簡単な雛形から紹介

function my_plugin_dashboard_test() {
    echo "ダッシュボードに表示する内容";
}
function my_plugin_dashboard_setup() {
	wp_add_dashboard_widget( 'my_plugin_dashboard_test', __( 'Widget Title' ),  'my_plugin_dashboard_test');
}
add_action('wp_dashboard_setup', 'my_plugin_dashboard_setup');

ダッシュボードから設定を変更する方法

ダッシュボードウィジットによってはウィジットの右上に「設定」というリンクがあり、クリックすると値などを変更できるものがあります。

wp_add_dashboard_widget 関数は wp-admin/includes/dashboard.php で以下のように定義されています。

function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null )

最初の例では第4引数の $controll_callback は定義していません。この $control_callback を設定するとダッシュボードウィジットに「設定」というリンクがつきます。この設定をクリックすると、$control_callback で指定した関数で出力した内容が表示されます。この表示は以下のようになります。

<form action="" method="post" class="dashboard-widget-control-form">
ここに $control_callback で出力した内容が表示される
<p class='submit'>
<input type='hidden' name='widget_id' value='suzuki_news_dashboard_test' />
<input type='submit' value='実行' />
</p>
</form>

つまり、$controll_callback で指定した関数でフォームの内容を出力すれば、それを POST で受け取れます。例えば $controll_callback に my_plugin_option と設定すれば、以下のようにして options テーブルに値を入れておくことも可能です。

function my_plugin_option() {
  if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) &&
       isset( $_POST['widget_id'] ) &&
       'my_plugin_dashboard_test' == $_POST['widget_id'] ) {
    foreach ( array( 'hoge', 'foo' ) as $key )
      $options[$key] = $_POST[$key];
      update_option( 'my_plugin_dashboard', $options );
    }
  }

  // form に表示する内容
}

ちなみに $controll_callback 関数で出力する内容は「設定」をクリックしたときに実行されるのではなく、ダッシュボードが表示されたときに実行され、CSS により非表示になっているだけです。

参考 URL
Rick’s HideOut ? How add options to your WordPress 2.7 dashboard widgets – Archivo

関連する投稿