WordPressスタッフ管理用プラグイン「Staff Manager」を公開しました

美容室やサロン、ナイトワーク系でスタッフ管理機能はよく実装を検討されますが、「求める仕様にフィットするプラグインが無い!」という事が多々あったので、今までの制作経験を元に汎用的に利用できるWordPressスタッフ管理プラグイン「Staff Manager」を作成・公開しました。

ダウンロード

Staff Manager(v1.0.0) Download

制作・公開目的

冒頭に少し書いたのですが、スタッフ管理をプラグインで行う際に「ユーザを追加して専用の管理ページで管理する」とか「スタッフ情報はユーザページで出勤管理は別のページ」とか、込み入ってる割には扱う情報は少なかったり拡張性に乏しかったりしてなかなか実務ベースで使うことができない場合が多く、結局は自作して組み込むことが多かった経験からシンプルかつ汎用的に扱えて実務ベースで困らない程度にカスタマイズできるようなプラグインを作り、同じようなことを思う方の助けになればと思い作成・公開しました。

  • スタッフ管理を行いたいけどスタッフ情報は管理者が一元管理したい
  • 通常投稿(post)と同じ感覚でスタッフ管理を行いたい
  • テンプレートやテーマ制作時に拡張機能としてスタッフ管理を追加したい
  • Filterを通して簡単に項目の変更、追加を行いたい
  • スタッフ情報と同時に出勤管理もしたい
  • 出勤情報を週単位や好みの月日で取得したい

こんな仕様のプラグインをお探しの方にフィットするプラグインだと思います!

スタッフ情報管理

list

通常の投稿(post)と同じ感覚でスタッフ情報の登録を行えます。スタッフ管理や出勤表管理は全て1ページ内で管理でき、ページを行き来したり独特な管理画面にせず管理するために必要な学習コストを極力抑えます。

スタッフイメージ登録

staff_image

スライダーやギャラリーで使用する画像のURLを入力します。入力したURLはGetStaffInfoクラスのstaticメソッド経由で取得できます(詳細はGetStaffInfoセクションを参照ください)

スタッフ情報

staff

名前、年齢、性格、趣味と言ったライトなスタッフ情報を入力します。

QA管理

qa

スタッフへのQAを管理します。スタッフへの質問はFilter hookを利用して追加変更が簡単に行なえます(詳細はHookセクションを参照ください)

スタッフオプション管理

options

スタッフのオプションを管理します。スタッフのオプションは質問同様はFilter hookを利用して追加変更が簡単に行なえます(詳細はHookセクションを参照ください)

スタッフコメント管理

comment

スタッフのコメント(またはスタッフへのコメント)を管理します。

これらの登録情報は全てGetStaffInfoクラスのstaticメソッドを呼び出すことで簡単に取得できます。

GetStaffInfoクラス

Staff Managerではtemplateやtemplate-partsに組み込むことを前提として開発されています。スタッフ情報管理画面から登録された情報はGetStaffInfoクラスを経由し簡単かつ安全に取得できます。

利用する場合、class_exists(‘GetStaffInfo’)等でClassの存在確認を行ってから呼び出すようにしてください(Staff Managerを無効化すると例外が発生する可能性があります)

GetStaffInfo::Images($id)
$id: スタッフID

スタッフイメージURLを配列で取得します。

GetStaffInfo::Questions($id)
$id: スタッフID

スタッフQAを連想配列で取得します。キーに質問、値に回答が格納されます。未回答の質問は配列に含まれません。

GetStaffInfo::Options($id)
$id: スタッフID

スタッフオプションを連想配列で取得します。キーにオプション内容、値に設定値が格納されます。

GetStaffInfo::Age($id)
$id: スタッフID

スタッフの年齢を取得します。

GetStaffInfo::Comment($id)
$id: スタッフID

スタッフコメントを取得します。

GetStaffInfo::Hobby($id)
$id: スタッフID

スタッフの趣味を取得します。

GetStaffInfo::Name($id)
$id: スタッフID

スタッフ名を取得します。

GetStaffInfo::Personality($id)
$id: スタッフID

スタッフの性格を取得します。

GetStaffInfo::Recommend($id)
$id: スタッフID

おすすめスタッフフラグを取得します。

GetStaffInfo::RelationId($id)
$id: スタッフID

WordPressユーザとの紐付けIDを取得します。

GetStaffInfo::Rookie($id)
$id: スタッフID

新人スタッフフラグを取得します。

GetStaffInfo::Skill($id)
$id: スタッフID

スタッフのスキルを取得します。

GetStaffInfo::Schedule($id)
$id: スタッフID

当日以降の出勤情報を全て取得します。

GetStaffInfo::WeekSchedule($id)
$id: スタッフID

当日から1週間の出勤情報を取得します。

GetStaffInfo::ScheduleByDate($id, $diff)
$id: スタッフID
$diff: 当日から見て取得する日の日差。デフォルトは0。

指定日の出勤情報を取得します。

Hook

スタッフQAは以下のコードベースで変更が行なえます。QA情報配列は上書きされます。

function edit_questions($args) {
  $args = array(
    'q1' => 'Who is your favorite artist ?',
    'q2' => 'What are the favorite dish ?',
    ...
  );
  return $args;
}
add_filter('staff_questions_filter', 'edit_questions');

スタッフオプション及び設定値(セレクトボックスに表示される値)は以下のコードベースで変更が行なえます。オプション及び設定値配列は上書きされます。

// オプション配列の上書き
function edit_options($args) {
  $args = array(
    'o1' => 'Are you living in the United States ?',
    'o2' => 'Reservation is possible ?',
  ...
  );
  return $args;
}
add_filter('staff_options_filter', 'edit_options');

// 設定値配列の上書き
function edit_option_val($args) {
  $args = array(
    '1' => 'OK',
    '2' => 'NG',
    ...
  );
  return $args;
}
add_filter('staff_option_val_filter', 'edit_option_val');

スタッフ情報の項目追加

スタッフ情報の項目は’admin_menu’と’save_post’に引っ掛けてfieldを追加してください。以下はスタッフコメントを追加する処理です。こちらを参考に追加してみてください。

function insert_staff_comment() {
  wp_nonce_field(wp_create_nonce(__FILE__), 'staff_comment_nonce');
  $relation = get_post_meta(get_the_ID(), 'staff_comment', true);
  echo '<label class="hidden" for="staff_comment">' . __('Comment', 'staff_manager') . '</label>';
  echo '<p>' . __('Please input staff comment.', 'staff_manager') . '</p>';
  echo '<textarea style="width:100%;height: 100px;" name="staff_comment">' . $relation . '</textarea>';
}

function add_staff_comment() {
  if (function_exists('insert_staff_comment')) {
    add_meta_box('staff_comment', 'Staff comment', 'insert_staff_comment', 'staff', 'normal', 'high');
  }
}

function save_staff_comment($post_id) {
  $my_nonce = filter_input(INPUT_POST, 'staff_comment_nonce');
  if (!wp_verify_nonce($my_nonce, wp_create_nonce(__FILE__))) {
    return $post_id;
  }
  if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
    return $post_id;
  }
  if (!current_user_can('edit_post', $post_id)) {
    return $post_id;
  }
  $data = filter_input(INPUT_POST, 'staff_comment');
  if (get_post_meta($post_id, 'staff_comment') == "") {
    add_post_meta($post_id, 'staff_comment', $data, true);
  } elseif ($data != get_post_meta($post_id, 'staff_comment', true)) {
    update_post_meta($post_id, 'staff_comment', $data);
  } elseif ($data == "") {
    delete_post_meta($post_id, 'staff_comment', get_post_meta($post_id, 'staff_comment', true));
  }
}

add_action('admin_menu', 'add_staff_comment');
add_action('save_post', 'save_staff_comment');

今後のアップデート

テーマに組み込む&汎用的を前提に作ったのであまり機能面を拡張していく予定はありません。Shortcodeでの情報表示や、GetStaffInfoクラスの拡張は進めていければなーと思っています。ロードマップではないですが…

  1. Shortcode追加(スタッフ情報表示、当日の出勤スタッフ一覧表示、等)
  2. GetStaffInfoクラス拡張(当日の出勤スタッフ一覧取得、週/月でのスタッフ出勤一覧取得、等)
  3. スタッフ情報や過去出勤情報ダウンロード(xmlかjsonかな?)
  4. 日本語化(日本語化の必要無いかも…)
  5. 公式ディレクトリ登録(もう少し機能ブラッシュアップしてから)

スタッフ情報に指名回数を追加して、人気のあるスタッフとか追加しても面白いかも(ちょっとナイトワーク系に寄っちゃいますが…)
Staff Managerは今後も有償化の予定はありません。独自カスタマイズや導入サポートは有償技術サポートを承っておりますので、お気軽にお見積・ご相談頂ければと思っております。

ホームページ制作、Webシステム制作のご依頼・ご相談は是非Beekにご依頼ください。お問合わせはこちらからどうぞ!:-)

よろしければSNSでシェアしてください!

コメントを残す

*
*