• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「ダッシュボードウィジェット API」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(翻訳済み、div は付けていない)
(関連)
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
{{CheckTrans}}
+
{{NeedTrans|一部}}
WordPress 2.7 のリリースで、新しいダッシュボードウィジェット API が導入されました。[[管理パネル/ダッシュボード | 管理画面ダッシュボード]] に新しいウィジェットを追加するのがシンプルになりました。PHP と WordPress [[プラグイン API]] の知識が必要ですが、アクションフックやフィルターフックに精通したプラグイン/テーマ作成者なら数分でできるでしょう。これにより、プラグインを一層使いやすくなるでしょう。
+
[[Version 2.7|WordPress 2.7]] で追加された'''ダッシュボードウィジェット API''' を使うと、[[管理パネル/ダッシュボード|管理画面ダッシュボード]]に簡単に新しいウィジェットを追加できます。PHP と WordPress [[プラグイン API]] の知識が必要ですが、アクションフックやフィルターフックに精通したプラグイン/テーマ作成者なら数分でできるでしょう。これにより、プラグインを一層使いやすくできるはずです。
  
 
==概要==
 
==概要==
 
===関数===
 
===関数===
ダッシュボードの追加に必要な主要なツールは wp_add_dashboard_widget() 関数です。
+
ダッシュボードの追加に必要な主要なツールは <tt>[[関数リファレンス/wp_add_dashboard_widget | wp_add_dashboard_widget()]]</tt> / [[:en:Function Reference/wp_add_dashboard_widget|en]] 関数です。リンク先にこの関数の完全な説明がありますが、簡単な概要は以下のとおりです。
  
  wp_add_dashboard_widget($widget_id, $widget_name, $callback, $control_callback = null)
+
使い方:
 +
 
 +
  wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null )
  
 
* $widget_id - ウィジェットを一意識別するスラッグ。これは css クラス、ウィジェットの配列のキーに使用します。
 
* $widget_id - ウィジェットを一意識別するスラッグ。これは css クラス、ウィジェットの配列のキーに使用します。
14行目: 16行目:
  
 
===動作===
 
===動作===
関数を実行するには、適切な動作をフックする必要があります。この場合 'wp_dashboard_setup' です。コアコードは以下の通りです。
+
関数を実行するには、適切な動作をフックする必要があります。この場合、<tt>[[関数リファレンス/add_action|add_action()]]</tt> を通じた <tt>[[プラグイン API/アクションリファレンス/wp_dashboard_setup|wp_dashboard_setup]]</tt> / [[:en:Plugin_API/Action_Reference/wp_dashboard_setup|en]] です。ネットワーク管理ダッシュボードには、<tt>[[プラグイン API/アクションリファレンス/wp_network_dashboard_setup|wp_network_dashboard_setup]]</tt> / [[:en:Plugin_API/Action_Reference/wp_network_dashboard_setup|en]] フックを使ってください。
 
+
do_action( 'wp_dashboard_setup' );
+
  
 
==用例==
 
==用例==
 
===ウィジェットを追加する===
 
===ウィジェットを追加する===
ウィジェットのもっとも簡単なアウトラインです。
+
以下は非常に基本的なダッシュボードウィジェットの例です。このコードはプラグインファイル内またはテーマの functions.php などに含めてください。
  
// ダッシュボードウィジェットにコンテンツを出力する関数を作成する
+
<pre>
   
+
/**
  function example_dashboard_widget_function() {
+
  * ダッシュボードにウィジェットを追加する。
// Display whatever it is you want to show
+
  *
echo "Hello World, I'm a great Dashboard Widget";
+
* この関数は以下の 'wp_dashboard_setup' アクションにフックされています。
}
+
  */
+
function example_add_dashboard_widgets() {
  // アクションフックで使用する関数を作成する
+
 
+
wp_add_dashboard_widget(
function example_add_dashboard_widgets() {
+
                'example_dashboard_widget',         // Widget slug.
wp_add_dashboard_widget('example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function');
+
                'Example Dashboard Widget',         // Title.
}  
+
                'example_dashboard_widget_function' // Display function.
+
        );
// 'wp_dashboard_setup' アクションにフックし、登録する
+
}
+
add_action( 'wp_dashboard_setup', 'example_add_dashboard_widgets' );
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
+
 
 +
/**
 +
* ダッシュボードウィジェットのコンテンツを出力する関数を作成する。
 +
*/
 +
function example_dashboard_widget_function() {
 +
 
 +
// 表示したいものを出力する。
 +
echo "Hello World, I'm a great Dashboard Widget";
 +
}
 +
</pre>
  
 
===上級: ウィジェットを一番上にする===
 
===上級: ウィジェットを一番上にする===
44行目: 53行目:
 
あなたのウィジェットをデフォルトよりも前に配置する例を以下に示します。metaboxes (ダッシュボードウィジェットもこの 1 つです) の内部配列を手作業で変更して、あなたのウィジェットをリストの先頭にし、最初に表示されるようにします。
 
あなたのウィジェットをデフォルトよりも前に配置する例を以下に示します。metaboxes (ダッシュボードウィジェットもこの 1 つです) の内部配列を手作業で変更して、あなたのウィジェットをリストの先頭にし、最初に表示されるようにします。
  
function example_add_dashboard_widgets() {
+
<pre>
  wp_add_dashboard_widget('example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function');
+
function example_add_dashboard_widgets() {
+
  wp_add_dashboard_widget( 'example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function' );
  // Globalize the metaboxes array, this holds all the widgets for wp-admin
+
  // メタボックス配列をグローバライズする。これには wp-admin のすべてのウィジェットが含まれる。
 
   
 
   
 
  global $wp_meta_boxes;
 
  global $wp_meta_boxes;
 
 
 
 
  // Get the regular dashboard widgets array
+
  // 通常のダッシュボードウィジェット配列を取得
  // (which has our new widget already but at the end)
+
  // (最後に新しいウィジェットが追加されている)
 
   
 
   
 
  $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
 
  $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
 
 
 
 
  // Backup and delete our new dashbaord widget from the end of the array
+
  // バックアップして新しいダッシュボードウィジェットを配列の最後から削除
 
   
 
   
  $example_widget_backup = array('example_dashboard_widget' => $normal_dashboard['example_dashboard_widget']);
+
  $example_widget_backup = array( 'example_dashboard_widget' => $normal_dashboard['example_dashboard_widget'] );
  unset($normal_dashboard['example_dashboard_widget']);
+
  unset( $normal_dashboard['example_dashboard_widget'] );
 
   
 
   
  // Merge the two arrays together so our widget is at the beginning
+
  // 2つの配列を統合して新しいウィジェットが最初にくるようにする
 
   
 
   
  $sorted_dashboard = array_merge($example_widget_backup, $normal_dashboard);
+
  $sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard );
 
   
 
   
  // Save the sorted array back into the original metaboxes
+
  // 並べ替えた配列を元のメタボックスに保存し直す
 
   
 
   
 
  $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
 
  $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
  }  
+
  }
 +
</pre>
  
 
残念ながら、この方法は、ウィジェットを並べ替えたことがない場合にのみ動作します。利用者が並べ替えた場合は、利用者の選好が優先されます。あなたのウィジェットを手作業で一番上に移動する必要があります。
 
残念ながら、この方法は、ウィジェットを並べ替えたことがない場合にのみ動作します。利用者が並べ替えた場合は、利用者の選好が優先されます。あなたのウィジェットを手作業で一番上に移動する必要があります。
75行目: 85行目:
 
ある場合は、特に複数ユーザーでブログを書く場合等は、インターフェースからウィジェットを取り除くことが役立つかもしれません。各ユーザーは、管理画面上部の "表示オプション" タブでウィジェットを表示しなくすることができます。技術に詳しくないユーザーがたくさんいる場合は、そもそも見せないのが好ましいでしょう。
 
ある場合は、特に複数ユーザーでブログを書く場合等は、インターフェースからウィジェットを取り除くことが役立つかもしれません。各ユーザーは、管理画面上部の "表示オプション" タブでウィジェットを表示しなくすることができます。技術に詳しくないユーザーがたくさんいる場合は、そもそも見せないのが好ましいでしょう。
  
現在 (2.7.0) は、デフォルトのダッシュボードウィジェットを取り除く簡単な関数はありません。取り除くには、一般 $wp_meta_box 配列からアイテムを手動で unset() する必要があります。ウィジェットを追加するのと似た方法で wp_dashboard_setup で行います。
+
ダッシュボードウィジェットを削除するには <tt>[[関数リファレンス/remove_meta_box|remove_meta_box()]]</tt> / [[:en:Function Reference/remove_meta_box|en]] 関数を使います。必要なパラメータについては以下のコード例をご覧ください。
  
ダッシュボードのメタボックスの名前です。<br/>
+
以下はダッシュボードのデフォルトウィジェット名です。
主カラム<br/>
+
<pre>
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']<br/>
+
// 主カラム (左):
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']<br/>
+
$wp_meta_boxes['dashboard']['normal']['high']['dashboard_browser_nag']
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']<br/>
+
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']<br/>
+
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']
 +
 
 +
// サイドカラム (右):
 +
$wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']
 +
$wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']
 +
</pre>
  
副カラム<br/>
+
以下は QuickPress ウィジェットを取り除く関数の例です。
$wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']<br/>
+
$wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']<br/>
+
$wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']<br/>
+
$wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']<br/>
+
  
主カラムまたは副カラムで名前のリストを表示するには、以下のコードを使用してください(配列の 2 番めで主/副を設定)。:<br/>
 
 
<pre>
 
<pre>
foreach (array_keys($wp_meta_boxes['dashboard']['normal']['core']) as $name){
+
// アクションフックで使う関数を作る
echo ("<p>");
+
function example_remove_dashboard_widget() {
echo ($name);
+
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
echo("</p>");
+
}
+
}
+
// 関数を登録するため 'wp_dashboard_setup' アクションにフックする
 +
add_action('wp_dashboard_setup', 'example_remove_dashboard_widget' );
 
</pre>
 
</pre>
  
quickpress と incomming_links ウィジェットを unset して取り除く例です。
+
From the [https://wordpress.org/support/topic/programatically-remove-the-wordpress-news-widget-from-the-dashboard#post-5060314 WordPress Forums], the example below removes all Dashboard Widgets
  
// Create the function to use in the action hook
+
<pre>
+
function remove_dashboard_meta() {
function example_remove_dashboard_widgets() {
+
        remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
// Globalize the metaboxes array, this holds all the widgets for wp-admin
+
        remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
+
        remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
global $wp_meta_boxes;
+
        remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
+
        remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
// Remove the quickpress widget
+
        remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
+
        remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
+
        remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
+
        remove_meta_box( 'dashboard_activity', 'dashboard', 'normal');//since 3.8
// Remove the incomming links widget
+
}
+
add_action( 'admin_init', 'remove_dashboard_meta' );
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
+
</pre>
}
+
 
+
===上級: ウィジェットをサイドに追加する===
// Hoook into the 'wp_dashboard_setup' action to register our function
+
The function doesn't allow you to choose where you want your widget to go and will automatically add it to the "core" which is the left side. However you are able to get it on the right side very easily.
+
 
add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );
+
You can use the <tt>[[Function Reference/add_meta_box|add_meta_box()]]</tt> function instead of <code>wp_add_dashboard_widget</code>. Simply specify <tt>'dashboard'</tt> in place of the <tt>$post_type</tt>. For example:
 +
 
 +
<pre>
 +
add_meta_box( 'id', 'Dashboard Widget Title', 'dash_widget', 'dashboard', 'side', 'high' );
 +
</pre>
 +
 
 +
Or, after creating the widget what you do is:
 +
 
 +
<pre>
 +
// Global the $wp_meta_boxes variable (this will allow us to alter the array).
 +
global $wp_meta_boxes;
 +
 
 +
// Then we make a backup of your widget.
 +
$my_widget = $wp_meta_boxes['dashboard']['normal']['core']['{widget id here}'];
 +
 
 +
// We then unset that part of the array.
 +
unset($wp_meta_boxes['dashboard']['normal']['core']['{widget id here}']);
 +
 
 +
// Now we just add your widget back in.
 +
$wp_meta_boxes['dashboard']['side']['core']['{widget id here}'] = $my_widget;
 +
</pre>
  
 
===ダッシュボードで RSS フィードを統合する===
 
===ダッシュボードで RSS フィードを統合する===
多くのデフォルトダッシュボードウィジェットは WordPress の開発とプラグインについての RSS フィードを統合するように設計されているので、簡単に行うために多くの努力がなされています。完全な例を示すことはしませんが、ウィジェットに RSS を統合する必要がある場合は、{{Trac|/wp-admin/includes/dashboard.php}} の既存のプラグインがキャッシュ機能を含めてどのように設計されているかを見ることをおすすめします。
+
ウィジェットに RSS を統合する必要がある場合は、{{Trac|/wp-admin/includes/dashboard.php}} の既存のプラグインがキャッシュ機能を含めてどのように設計されているかを見ることをおすすめします。
 +
 
 +
==ウィジェットオプション==
 +
WordPress does not provide a built-in way to fetch options for a specific widget. By default, you would need to use [[Function Reference/get_option|get_option( 'dashboard_widget_options' )]] to fetch all widget options and then filter the returned array manually.  This section presents some functions that can easily be added to a theme or plugin to help getting and setting of widget options.
 +
 
 +
===ウィジェットオプションの取得===
 +
This function will fetch all widget options, or only options for a specified widget.
 +
<pre>
 +
/**
 +
* Gets all widget options, or only options for a specified widget if a widget id is provided.
 +
*
 +
* @param string $widget_id Optional. If provided, will only get options for that widget.
 +
* @return array An associative array
 +
*/
 +
public static function get_dashboard_widget_options( $widget_id='' )
 +
{
 +
    //Fetch ALL dashboard widget options from the db...
 +
    $opts = get_option( 'dashboard_widget_options' );
 +
 
 +
    //If no widget is specified, return everything
 +
    if ( empty( $widget_id ) )
 +
        return $opts;
 +
 
 +
    //If we request a widget and it exists, return it
 +
    if ( isset( $opts[$widget_id] ) )
 +
        return $opts[$widget_id];
 +
 
 +
    //Something went wrong...
 +
    return false;
 +
}
 +
</pre>
 +
 
 +
===単独のウィジェットオプションを取得する===
 +
If you want to easily fetch only a single option (for outputting to a theme), the following function will make that easier.
 +
 
 +
This example should be used with the previous "Getting Widget Options" example function.
 +
 
 +
<pre>
 +
/**
 +
* Gets one specific option for the specified widget.
 +
* @param $widget_id
 +
* @param $option
 +
* @param null $default
 +
*
 +
* @return string
 +
*/
 +
public static function get_dashboard_widget_option( $widget_id, $option, $default=NULL ) {
 +
 
 +
    $opts = get_dashboard_widget_options($widget_id);
 +
 
 +
    //If widget opts dont exist, return false
 +
    if ( ! $opts )
 +
        return false;
 +
 
 +
    //Otherwise fetch the option or use default
 +
    if ( isset( $opts[$option] ) && ! empty($opts[$option]) )
 +
        return $opts[$option];
 +
    else
 +
        return ( isset($default) ) ? $default : false;
 +
 
 +
}
 +
</pre>
 +
 
 +
===ウィジェットオプションの更新===
 +
This function can be used to easily update all of a widget's options. It can also be used to add a widget option non-destructively. Simply set the $add_option argument to true, and this will NOT overwrite any existing options (although it will add any missing ones).
 +
<pre>
 +
/**
 +
* Saves an array of options for a single dashboard widget to the database.
 +
* Can also be used to define default values for a widget.
 +
*
 +
* @param string $widget_id The name of the widget being updated
 +
* @param array $args An associative array of options being saved.
 +
* @param bool $add_only Set to true if you don't want to override any existing options.
 +
*/
 +
public static function update_dashboard_widget_options( $widget_id , $args=array(), $add_only=false )
 +
{
 +
    //Fetch ALL dashboard widget options from the db...
 +
    $opts = get_option( 'dashboard_widget_options' );
 +
 
 +
    //Get just our widget's options, or set empty array
 +
    $w_opts = ( isset( $opts[$widget_id] ) ) ? $opts[$widget_id] : array();
 +
 
 +
    if ( $add_only ) {
 +
        //Flesh out any missing options (existing ones overwrite new ones)
 +
        $opts[$widget_id] = array_merge($args,$w_opts);
 +
    }
 +
    else {
 +
        //Merge new options with existing ones, and add it back to the widgets array
 +
        $opts[$widget_id] = array_merge($w_opts,$args);
 +
    }
 +
 
 +
    //Save the entire widgets array back to the db
 +
    return update_option('dashboard_widget_options', $opts);
 +
}
 +
</pre>
 +
 
 +
==関連==
 +
* 記事: [[ダッシュボードウィジェット API]]
 +
* レッスン: [[Example Dashboard Widget|ダッシュボードウィジェットの例]]
  
{{原文|Dashboard Widgets API|81992}} <!-- 17:49, 9 January 2010 Thivilla -->
+
{{原文|Dashboard Widgets API|151036}} <!--   15:41, 21 April 2015 Jdgrimes  -->
  
 
[[Category:プラグイン]]
 
[[Category:プラグイン]]

2015年5月13日 (水) 21:00時点における最新版

このページ「ダッシュボードウィジェット API」は一部未翻訳です。和訳や日本語情報を加筆してくださる協力者を求めています

WordPress 2.7 で追加されたダッシュボードウィジェット API を使うと、管理画面ダッシュボードに簡単に新しいウィジェットを追加できます。PHP と WordPress プラグイン API の知識が必要ですが、アクションフックやフィルターフックに精通したプラグイン/テーマ作成者なら数分でできるでしょう。これにより、プラグインを一層使いやすくできるはずです。

概要

関数

ダッシュボードの追加に必要な主要なツールは wp_add_dashboard_widget() / en 関数です。リンク先にこの関数の完全な説明がありますが、簡単な概要は以下のとおりです。

使い方:

wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null )
  • $widget_id - ウィジェットを一意識別するスラッグ。これは css クラス、ウィジェットの配列のキーに使用します。
  • $widget_name - ウィジェットのヘッダに表示される名前。
  • $callback - ウィジェットのコンテンツを表示するように作成した関数の名前。
  • $control_callback - (オプション) ウィジェットオプションフォームの送信を処理し、フォーム要素を表示する関数の名前。

動作

関数を実行するには、適切な動作をフックする必要があります。この場合、add_action() を通じた wp_dashboard_setup / en です。ネットワーク管理ダッシュボードには、wp_network_dashboard_setup / en フックを使ってください。

用例

ウィジェットを追加する

以下は非常に基本的なダッシュボードウィジェットの例です。このコードはプラグインファイル内またはテーマの functions.php などに含めてください。

/**
 * ダッシュボードにウィジェットを追加する。
 *
 * この関数は以下の 'wp_dashboard_setup' アクションにフックされています。
 */
function example_add_dashboard_widgets() {

	wp_add_dashboard_widget(
                 'example_dashboard_widget',         // Widget slug.
                 'Example Dashboard Widget',         // Title.
                 'example_dashboard_widget_function' // Display function.
        );	
}
add_action( 'wp_dashboard_setup', 'example_add_dashboard_widgets' );

/**
 * ダッシュボードウィジェットのコンテンツを出力する関数を作成する。
 */
function example_dashboard_widget_function() {

	// 表示したいものを出力する。
	echo "Hello World, I'm a great Dashboard Widget";
} 

上級: ウィジェットを一番上にする

通常は、プラグインの利用者がドラッグして好きな位置にダッシュボードウィジェットを配置できるようにすべきです。デフォルトウィジェットを予め並べるための簡単な API はありません。新しいウィジェットは一番下に配置されます。API にソートが追加されるまでは、この問題を処理するのは相当複雑です。

あなたのウィジェットをデフォルトよりも前に配置する例を以下に示します。metaboxes (ダッシュボードウィジェットもこの 1 つです) の内部配列を手作業で変更して、あなたのウィジェットをリストの先頭にし、最初に表示されるようにします。

function example_add_dashboard_widgets() {
 	wp_add_dashboard_widget( 'example_dashboard_widget', 'Example Dashboard Widget', 'example_dashboard_widget_function' );
 	// メタボックス配列をグローバライズする。これには wp-admin のすべてのウィジェットが含まれる。
 
 	global $wp_meta_boxes;
 	
 	// 通常のダッシュボードウィジェット配列を取得
 	// (最後に新しいウィジェットが追加されている)
 
 	$normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
 	
 	// バックアップして新しいダッシュボードウィジェットを配列の最後から削除
 
 	$example_widget_backup = array( 'example_dashboard_widget' => $normal_dashboard['example_dashboard_widget'] );
 	unset( $normal_dashboard['example_dashboard_widget'] );
 
 	// 2つの配列を統合して新しいウィジェットが最初にくるようにする
 
 	$sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard );
 
 	// 並べ替えた配列を元のメタボックスに保存し直す
 
 	$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
 }

残念ながら、この方法は、ウィジェットを並べ替えたことがない場合にのみ動作します。利用者が並べ替えた場合は、利用者の選好が優先されます。あなたのウィジェットを手作業で一番上に移動する必要があります。

上級: ダッシュボードウィジェットを取り除く

ある場合は、特に複数ユーザーでブログを書く場合等は、インターフェースからウィジェットを取り除くことが役立つかもしれません。各ユーザーは、管理画面上部の "表示オプション" タブでウィジェットを表示しなくすることができます。技術に詳しくないユーザーがたくさんいる場合は、そもそも見せないのが好ましいでしょう。

ダッシュボードウィジェットを削除するには remove_meta_box() / en 関数を使います。必要なパラメータについては以下のコード例をご覧ください。

以下はダッシュボードのデフォルトウィジェット名です。

// 主カラム (左):
$wp_meta_boxes['dashboard']['normal']['high']['dashboard_browser_nag']
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']
$wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']

// サイドカラム (右):
$wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']
$wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']

以下は QuickPress ウィジェットを取り除く関数の例です。

// アクションフックで使う関数を作る
function example_remove_dashboard_widget() {
 	remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
} 
 
// 関数を登録するため 'wp_dashboard_setup' アクションにフックする
add_action('wp_dashboard_setup', 'example_remove_dashboard_widget' );

From the WordPress Forums, the example below removes all Dashboard Widgets

function remove_dashboard_meta() {
        remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' );
        remove_meta_box( 'dashboard_plugins', 'dashboard', 'normal' );
        remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
        remove_meta_box( 'dashboard_secondary', 'dashboard', 'normal' );
        remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
        remove_meta_box( 'dashboard_recent_drafts', 'dashboard', 'side' );
        remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
        remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
        remove_meta_box( 'dashboard_activity', 'dashboard', 'normal');//since 3.8
}
add_action( 'admin_init', 'remove_dashboard_meta' );

上級: ウィジェットをサイドに追加する

The function doesn't allow you to choose where you want your widget to go and will automatically add it to the "core" which is the left side. However you are able to get it on the right side very easily.

You can use the add_meta_box() function instead of wp_add_dashboard_widget. Simply specify 'dashboard' in place of the $post_type. For example:

add_meta_box( 'id', 'Dashboard Widget Title', 'dash_widget', 'dashboard', 'side', 'high' );

Or, after creating the widget what you do is:

// Global the $wp_meta_boxes variable (this will allow us to alter the array).
global $wp_meta_boxes;

// Then we make a backup of your widget.
$my_widget = $wp_meta_boxes['dashboard']['normal']['core']['{widget id here}'];

// We then unset that part of the array.
unset($wp_meta_boxes['dashboard']['normal']['core']['{widget id here}']);

// Now we just add your widget back in.
$wp_meta_boxes['dashboard']['side']['core']['{widget id here}'] = $my_widget;

ダッシュボードで RSS フィードを統合する

ウィジェットに RSS を統合する必要がある場合は、/wp-admin/includes/dashboard.php の既存のプラグインがキャッシュ機能を含めてどのように設計されているかを見ることをおすすめします。

ウィジェットオプション

WordPress does not provide a built-in way to fetch options for a specific widget. By default, you would need to use get_option( 'dashboard_widget_options' ) to fetch all widget options and then filter the returned array manually. This section presents some functions that can easily be added to a theme or plugin to help getting and setting of widget options.

ウィジェットオプションの取得

This function will fetch all widget options, or only options for a specified widget.

/**
 * Gets all widget options, or only options for a specified widget if a widget id is provided.
 *
 * @param string $widget_id Optional. If provided, will only get options for that widget.
 * @return array An associative array
 */
public static function get_dashboard_widget_options( $widget_id='' )
{
    //Fetch ALL dashboard widget options from the db...
    $opts = get_option( 'dashboard_widget_options' );

    //If no widget is specified, return everything
    if ( empty( $widget_id ) )
        return $opts;

    //If we request a widget and it exists, return it
    if ( isset( $opts[$widget_id] ) )
        return $opts[$widget_id];

    //Something went wrong...
    return false;
}

単独のウィジェットオプションを取得する

If you want to easily fetch only a single option (for outputting to a theme), the following function will make that easier.

This example should be used with the previous "Getting Widget Options" example function.

/**
 * Gets one specific option for the specified widget.
 * @param $widget_id
 * @param $option
 * @param null $default
 *
 * @return string
 */
public static function get_dashboard_widget_option( $widget_id, $option, $default=NULL ) {

    $opts = get_dashboard_widget_options($widget_id);

    //If widget opts dont exist, return false
    if ( ! $opts )
        return false;

    //Otherwise fetch the option or use default
    if ( isset( $opts[$option] ) && ! empty($opts[$option]) )
        return $opts[$option];
    else
        return ( isset($default) ) ? $default : false;

}

ウィジェットオプションの更新

This function can be used to easily update all of a widget's options. It can also be used to add a widget option non-destructively. Simply set the $add_option argument to true, and this will NOT overwrite any existing options (although it will add any missing ones).

/**
 * Saves an array of options for a single dashboard widget to the database.
 * Can also be used to define default values for a widget.
 *
 * @param string $widget_id The name of the widget being updated
 * @param array $args An associative array of options being saved.
 * @param bool $add_only Set to true if you don't want to override any existing options.
 */
public static function update_dashboard_widget_options( $widget_id , $args=array(), $add_only=false )
{
    //Fetch ALL dashboard widget options from the db...
    $opts = get_option( 'dashboard_widget_options' );

    //Get just our widget's options, or set empty array
    $w_opts = ( isset( $opts[$widget_id] ) ) ? $opts[$widget_id] : array();

    if ( $add_only ) {
        //Flesh out any missing options (existing ones overwrite new ones)
        $opts[$widget_id] = array_merge($args,$w_opts);
    }
    else {
        //Merge new options with existing ones, and add it back to the widgets array
        $opts[$widget_id] = array_merge($w_opts,$args);
    }

    //Save the entire widgets array back to the db
    return update_option('dashboard_widget_options', $opts);
}

関連

最新英語版: WordPress Codex » Dashboard Widgets API最新版との差分