ダッシュボードの表示カスタマイズ方法
-
ユーザーの使い勝手を考慮してダッシュボードの表示を強制的にカスタマイズしたいと考えています。
ただ、プラグインによってはダッシュボードに新しく項目を作るプラグインもありますので、新規にプラグインを追加した場合も自動で非表示にしたいと思います。
また、自作プラグインで表示する項目や必要な項目は表示しておきたいので、方法としては一度すべての表示を非表示に設定した上で、必要なものを指定して表示したいと思います。
表示する位置なども固定(ユーザーが変更しても次回ログイン時には元に戻る)するような設定にしたいです。CodexでDashboard Widgets APIなども見てみたのですが、いまいち使い方がわかりませんでした・・・
よろしくご教授お願いいたします。
※もしかしたら以前フォーラムで同じような内容の回答があるかもしれません。検索したのですが・・・もしあったならそちらへのリンク回答でもいいです。
-
>方法としては一度すべての表示を非表示に設定した上で
プラグインがたいていフックしているのはwp_dashboard_setupなので、remove_all_actions('wp_dashboard_setup');
とすれば、たいていのプラグインのダッシュボードウィジェットは消えると思います。(私の作ったプラグインの場合は消えました。行儀の悪いプラグインは分かりません。)
「現在の状況」のような、デフォルトのものは上では消えないみたいです。
「現在の状況」のような、デフォルトのものは上では消えないみたいです。
デフォルトで表示されているフォーラムのRSSやクイック投稿なども不要なのです。
実際には現在の状況だけがあればよく、あとは自作プラグインで作った物を表示する必要があります。まさにカスタマイズが必要なのですね。自作プラグインが1つだけなら、remove_all_actionsしたあとにwp_dashboard_setupすればよさそうですが、複数あるのでそういうわけにもいきません。
投稿画面をjqueryで置き換える方法はkzさんのブログにも説明されているのですが、同じようなことをダッシュボードで行いたいというのが希望です。
どうか実現方法をご教授お願いいたします。
ダッシュボードの不要な widget を消すのは以下でOK。(codex を参考に)
remove_all_actions('wp_dashboard_setup'); function example_remove_dashboard_widgets() { // Globalize the metaboxes array, this holds all the widgets for wp-admin global $wp_meta_boxes; // Remove the quickpress widget unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); } // Hoook into the 'wp_dashboard_setup' action to register our function add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );
配置を変更するのは AJAX で行っているようなので、私には分かりません。
ありがとうございます。
不要な物を消せるだけでもありがたいです。
自作プラグインに仕込んでおけばサイトが増えた際にも設定が楽になりますからね;)自分でも色々探しているのですが、いまだ探せていません・・・
1列レイアウト+ウィジェット追加+強制並び替えです。
// [表示オプション][ヘルプ]のタブを非表示にする function my_admin_print_styles(){ echo ' <style type="text/css"> #screen-options-link-wrap, #contextual-help-link-wrap{display:none;} </style>'; } add_action('admin_print_styles', 'my_admin_print_styles', 21); // スクリーンの列を1にする function my_screen_layout_dashboard($result, $option, $user){ return 1; } add_filter('get_user_option_screen_layout_dashboard', 'my_screen_layout_dashboard', 10, 3); // ウィジェット削除&追加 remove_all_actions('wp_dashboard_setup'); function example_remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); wp_add_dashboard_widget( 'my_dashboard_test1', __('俺のダッシュボードウィジェット1'), 'my_dashboard_test1' ); wp_add_dashboard_widget( 'my_dashboard_test2', __('俺のダッシュボードウィジェット2'), 'my_dashboard_test2' ); } add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets'); // function my_dashboard_test1(){ ?> <p>1個目のウィジェットです。</p> <?php if(current_user_can('edit_posts')){ ?> <p>投稿の編集権限を持つユーザーだけがこの文章を見ることができるのだフハハハ!</p> <?php } } // function my_dashboard_test2(){ ?> <p>2個目のウィジェットです。</p> <?php } // ウィジェットの並び替え function my_print_footer_scripts() { echo '<script type="text/javascript"> //<![CDATA[ jQuery(document).ready(function($){ $("#normal-sortables") .append($("#my_dashboard_test2")) .append($("#my_dashboard_test1")) .append($("#dashboard_right_now")); }); //]]> </script>'; } add_action('admin_print_footer_scripts', 'my_print_footer_scripts', 21);
いつもいつもありがとうございます!
今の案件が修了し次第検証させていただきます。
ご報告は後になると思いますが、とりあえず閉じさせていただきます。検証報告です。
強制並び替えの件ですが、最初から2列目に配置されていたアイテムは1列になると非表示になるようなのですが。
そもそもどのコードが1列目へ移動をさしているのかわからず、1列表示にしてみたり2列表示にしてみたりしているのですが、2列目にアイテムがある状態で1列に変更すると2列目にあったアイテムが表示されなくなりました。2列に戻すと2列目にあるので削除されたわけではなかったです。検証した感じですとAjaxは生きていて、D&Dで並び替えた状態が保存されているようで「強制」ではないようです。
もう少し研究してみます。
大変失礼しました。
やはりjQueryをちゃんと理解していなかった為、コードの編集を間違っておりました。
強制並び替えはちゃんと発生します。
とりあえず2列表示に挑戦しています。またご報告します。
//<![CDATA[ jQuery(document).ready(function($){ $("#normal-sortables") .append($("#my_dashboard_test2")) .append($("#my_dashboard_test1")); $("#side-sortables") .append($("#dashboard_right_now")); }); //]]>
これで2列表示にしてみました。
まだまだ勉強不足なのであっているのかもわかりませんが(汗ありがとうございました。
まだ初心者ですので宜しくお願いします。
最近、バージョン3.5にアップグレードをされたwordpressをダウンロードしてホームページを作ろうと編集画面に入り、いつも左のダッシュボードの下に表示されていた項目の中から「リンク」が消えており茫然としております。
メニューにリンクを入れないと様にならないので困っております。優しくご指導いただければ嬉しいです。
http://eejp.net/taiyo/wp-admin/
- トピック「ダッシュボードの表示カスタマイズ方法」には新たに返信することはできません。