WordPressのダッシュボードには、最近の投稿や、最近の下書き等が表示されています。個人ブログだとこれで十分ですが、規模の大きいウェブサイトとかだとカスタム投稿タイプを使うケースもあると思います。なので、カスタム投稿タイプの下書きも表示できるようにしてみます。
WordPress本体のコードを見る
WordPressでは、ダッシュボードなどの管理画面を自由にカスタマイズできます。だからといって、やみくもにコードを書き始めるのは、あまり得策とは言えません。特に今回のケースでは、「投稿の最近の下書き」は既にWordPressのダッシュボードに表示されています。WordPress本体のどこかに、「投稿の最近の下書き」があるはずだ、と考えれば、まずは「WordPress本体のコードを見る」というのが良いと分かるでしょう。
ダッシュボードの処理
ダッシュボードは管理画面内にあるので、wp-admin
を見ていきます。wp-admin
直下には、ダッシュボードと関係の深そうなファイルは見当たりません。ですが、wp-admin/index.php
ファイルを見てみます。そうすると、
require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
という記述がありますね。これで、wp-admin/includes/dashboard.php
を読めば良さそうだ、という事が分かります。
wp-admin/includes/dashboard.php
を見ていくと、wp_dashboard_recent_drafts
という関数が見つかりますね。この関数は、「下書き一覧を引数で受け取って、整形して出力する」処理を行います(引数が無い場合は投稿の下書きを取得して出力します)。
この関数を使えば、今回の目標である「カスタム投稿タイプの下書きをダッシュボードに表示する」はかなり簡単に実現できそうです。
完成コード
wp_dashboard_recent_drafts
に、カスタム投稿タイプの下書きを渡して処理を行います。
function my_draft() { $arg = array('post_type' => 'events', 'post_status' => 'draft'); // *条件: カスタム投稿 events の下書き $messages = get_posts($arg); // *の条件でデータを取得 wp_dashboard_recent_drafts($messages); // 関数にデータを渡す } function my_dashboard_widgets() { wp_add_dashboard_widget('my_dashboard_widget', 'イベント情報の下書き', 'my_draft'); // 独自メタボックスを作成し、my_draft関数を呼び出す } add_action('wp_dashboard_setup', 'my_dashboard_widgets'); // ダッシュボードで独自メタボックスを表示する
my_draft()が実際の処理を行っている関数です。my_dashboard_widgets()はダッシュボードにメタボックスを追加します。さいごに、my_dashboard_widgets()関数を、wp_dashboard_setupフックで実行するように設定すれば、完了です。
カスタム投稿タイプが複数必要なら、wp_dashboard_recent_drafts
を複数回呼び出してください。
ダッシュボードの表示
以下のようになります。
カスタム投稿タイプの下書きもダッシュボードで確認することができるようになりました。