ダッシュボード ウィジェットを構成可能にする
数週間前、カスタム RSS ダッシュボード メタボックスを管理に追加する方法を説明しました。今日は、このダッシュボードのメタボックスに構成可能なオプションを追加する方法を説明したいと思います。
これから行うことの結果は次のとおりです。
このチュートリアルで最も重要な関数は、wp_add_dashboard_widget() です。 WordPressのダッシュボードウィジェットを登録する機能です。ウィジェットとウィジェットをダッシュボードに出力する関数の登録が非常に簡単であることはすでに説明しましたが、この関数の最後のパラメーターについては説明していませんでした。基本的に、wp_add_dashboard_widget() には 4 つのパラメータがあります。
$widget_id
(整数) (必須) ウィジェットの識別スラッグ。これは、ウィジェットの配列内の CSS クラスおよびキーとして使用されます。
デフォルト: なし
$widget_name
(文字列) (必須) これは、ウィジェットの見出しに表示される名前です。
デフォルト: なし
$callback
(文字列) (必須) ウィジェットの実際のコンテンツを表示する、作成する関数の名前。
デフォルト: なし
$control_callback
(文字列) (オプション) ウィジェット オプション (構成) フォームの送信を処理し、フォーム要素も表示する、作成する関数の名前。
デフォルト: なし
ご覧のとおり、4 番目のパラメータは「configure」オプションを担当します。このパラメータを入力すると、ウィジェットを構成する特定の関数をロードするように WordPress に指示します。メタボックスのタイトルの上にカーソルを置くと、そのタイトルに「設定」リンクが自動的に作成されます。
ステップ 1: オプション設定機能を登録する
したがって、最初のステップは、wp_add_dashboard_widget() 呼び出しを変更し、最後のパラメータにオプション設定関数の名前を追加することです。 rc_mdm_register_widgets() 関数は次のようになります。
/**
* Register all dashboard metaboxes
*
* @access public
* @since 1.0
* @return void
*/
function rc_mdm_register_widgets() {
global $wp_meta_boxes;
wp_add_dashboard_widget('widget_custom_rss', __('My RSS Feeds', 'rc_mdm'), 'rc_mdm_create_my_rss_box', 'rc_mdm_configure_my_rss_box');
}
add_action('wp_dashboard_setup', 'rc_mdm_register_widgets');
最後のパラメータに「rc_mdm_configure_my_rss_box」を追加しただけです。
ステップ 2: オプション設定関数を作成する
この手順は複雑ではありません。私たちがしなければならないのは、配列に格納されるフォーム フィールドを作成することだけです。これを行うには、update_option() を使用します。 WordPress が自動的に作成するため、完全なフォームを作成する必要はありません。フィールドを登録するだけです。言及すべき非常に良い点は、WordPress がフォームを安全にし、潜在的なセキュリティ問題を回避する nonce をフォームに自動的に追加することです。これは、rc_mdm_configure_my_rss_box() 関数のコードです (覚えていますか? これは、wp_add_dashboard_widget() で定義した 4 番目のパラメーターです)。
/**
* Creates the RSS metabox configuration settings
*
* @access public
* @since 1.0
* @return void
*/
function rc_mdm_configure_my_rss_box( $widget_id ) {
// Get widget options
if ( !$rc_mdm_widget_options = get_option( 'rc_mdm_dashboard_widget_options' ) )
$rc_mdm_widget_options = array();
// Update widget options
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['rc_mdm_widget_post']) ) {
update_option( 'rc_mdm_dashboard_widget_options', $_POST['rc_mdm_widget'] );
}
// Retrieve feed URLs
$url_1 = $rc_mdm_widget_options['url_1'];
$url_2 = $rc_mdm_widget_options['url_2'];
$url_3 = $rc_mdm_widget_options['url_3']; ?>
<p>
<label for="rc_mdm_url_1-"><?php _e('Enter the RSS feed URL #1:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_1" name="rc_mdm_widget[url_1]" type="text" value="<?php if( isset($url_1) ) echo $url_1; ?>" />
</p>
<p>
<label for="rc_mdm_url_2"><?php _e('Enter the RSS feed URL #2:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_2" name="rc_mdm_widget[url_2]" type="text" value="<?php if( isset($url_2) ) echo $url_2; ?>" />
</p>
<p>
<label for="rc_mdm_url_3"><?php _e('Enter the RSS feed URL #3:', 'rc_mdm'); ?></label>
<input class="widefat" id="rc_mdm_url_3" name="rc_mdm_widget[url_3]" type="text" value="<?php if( isset($url_3) ) echo $url_3; ?>" />
</p>
<input name="rc_mdm_widget_post" type="hidden" value="1" />
<?php
} ?>
これでダッシュボードをリロードできるようになり、ウィジェットのメタボックスにカーソルを置くと、右上に「設定」リンクが表示されます。それをクリックすると、オプション フォームがロードされます。フィールドに入力して保存すると、フィード URL がオプション SQL テーブルに保存されます。
ステップ 3: オプションの取得
最後のステップは、チュートリアルの最初の部分でハードコーディングしたフィード URL を置き換えることです。 rc_mdm_create_my_rss_box() の 14 行目から 18 行目に、2 つの URL を追加しました。次のように置き換えるだけです。
// My feeds list
if ( !$my_feeds = get_option( 'rc_mdm_dashboard_widget_options' ) )
$my_feeds = array();
以上です!ダッシュボード ウィジェットにカスタム オプションを簡単に追加することができました。