Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

ダッシュボードに予約投稿機能追加

きっかけ

公開出来るような自作でプラグインを作ってみようという話から、ダッシュボードに機能追加するプラグインを作る事にしました。

なぜダッシュボードなのか

色々とプラグイン機能のアイデアをネリネリしてみたものの、探してみると意外と充実したWordPressの既存プラグイン群に存在していた為、機能はシンプルですが、自身で今まで触れた事のないダッシュボードへの機能追加プラグインを作成してみる事にしました。

今回ダッシュボードへ追加する機能

今回はシンプルな機能を作って慣れる為、今回は簡単な予約投稿件数を表示するダッシュボードウィジェットを作成してみる事にしました。

主な機能
・予約投稿の総件数
・本日公開予定の予約投稿件数
・予約投稿リスト(公開予定日時、投稿タイトル)

ダッシュボードの構造

WordPressのダッシュボードにアクセスすると、サイトの階層構造にもよりますが、大抵下記のようなURLになると思います。

「http://」 or 「https://」 + 「ドメイン名」 + 「wp-admin/index.php」

この  index.php をテキストエディタで開いてみると、15行目あたりにダッシュボードの機能を呼び出している  wp_dashboard_setup というそれっぽい名前の記述が見つかると思います。まさにこれが、 ダッシュボードの表示制御している本体になります。

ダッシュボード関数本体は  wp-admin/includes/dashboard.php にあるので、興味がある人はソースを読んでみると面白いかもしれません。実際にダッシュボードに機能追加する場合は、下記の2つの関数を使用します。

・wp_add_dashboard_widget(ダッシュボードウィジェットを追加)
・wp_dashboard_setup(ダッシュボードの生成アクションフック)

【[公式]ダッシュボードウィジェットAPI】

実際には、下記の様に記載します。

<?php
//ダッシュボード生成を行うアクションフックに追加 add_action('wp_dashboard_setup', 'hogehoge_widgets'); function hogehoge_widgets() { //追加するダッシュボードウィジェットの処理を定義 wp_add_dashboard_widget('serverinfo_widget', '予約投稿情報', 'hogehoge_main');
}
//追加するダッシュボードウィジェットのメイン処理 function hogehoge_main() { //ここにメイン処理を書きます。 }

意外と忘れがちな日付の取得方法

今回の機能で、日付の絞込を行って予約投稿を取得しているのですが、普段PHPのプログラムをゴリゴリ書いている人が意外と陥りがちな注意点を一つ。

PHPの日付フォーマット関数に date というのがあるので、日付処理をする場合は、よく使う方も多いかと思います。例えば、PHPの標準のdate関数を使って、現在日時を取得しようとした場合、下記の様な記述になります。

<?php
//現在日時を取得
echo date_i18n('Y-m-d Y-m-d H:i:s');

通常であればこれで現在日時が取得できるのですが、上記をWordPress内でそのまま実行するとUTC(協定世界時)が取れてしまいます。

//通常のdateの実行結果
2018-10-25 16:45:28

//WordPress上でのdateの実行結果
2018-10-25 07:45:28

その為、WordPress内で日付を使用したい場合は、WordPress側からAPI提供されている date_i18n 関数を使用します。普段からWordPressで開発をしていない方は、意外にハマりやすいのでご注意を。

【[公式]date_i18n】