WP Manifestindependent plugin directory
manifest / users / user-read-management

User Read Management

WordPressの読了管理機能

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/yamasakidaisuke/user-read-management/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPressプラグイン - ユーザーごとに投稿の読了状態を管理するシステム

📋 概要

User Read Managementは、ユーザーが各投稿を読んだかどうかを追跡・管理できるWordPressプラグインです。特定のカテゴリーの投稿に「読みました」チェックボックスを表示し、読了状態を一覧表で確認できます。

動物病院向けに最適化: 獣医師、看護師、管理室、病院の4つのカスタムロールを自動作成し、職種別に表示・管理が可能です。bbPress権限も自動で付与されるため、フォーラム機能を維持したまま職種の区別ができます。

✨ 主な機能

1. 投稿ページでの読了チェックボックス

  • 特定カテゴリー(manuals, medical-information, essential_readings, resident-study-sessions, dr_aoki_archive)の投稿にチェックボックスを自動表示
  • ログインユーザーが「読みました」をチェック可能
  • AJAXによるリアルタイム保存

2. 読了状態一覧表示(ショートコード)

  • ユーザーロール別表示:
    • デフォルトで獣医師ロールのユーザーのみを表示
    • カスタマイズで看護師、管理室、病院も表示可能
  • カテゴリー別表示:
    • 「必読資料」(essential_readings)
    • 「診療マニュアル」(manuals)
    • 「医療情報」(medical-information)
    • 「研修医勉強会資料」(resident-study-sessions)
    • 「青木先生による眼科講義」(dr_aoki_archive)
    • カテゴリーごとの独立した表で見やすく整理
  • 編集権限:
    • 自分自身の状態: 誰でも変更可能
    • 他ユーザーの状態: 管理者のみ変更可能
  • セルクリックで状態を切り替え(済 ⇔ 未)
  • 固定ヘッダー・固定列でスクロール時も見やすい

3. CSVエクスポート機能(管理者・管理室)

  • 読了状態一覧をCSVファイルでダウンロード可能(管理者または管理室(bbPress権限)ロール)
  • ファイル名: YYYYMMDDHHmmss_end-of-reading-management.csv
  • カテゴリー列付きで分類しやすい
  • Excel対応(UTF-8 BOM付き)
  • タイムスタンプ付きで記録管理に最適

4. bbPress連携機能

  • カスタムロールにbbPress権限を自動付与
  • bbPress登録ユーザーからの移行がスムーズ
  • フォーラム機能を維持したまま職種別管理が可能
  • bbPressがない環境でも安全に動作

5. セキュリティ

  • WordPress nonce による CSRF 対策
  • 権限チェック(自分または管理者のみ編集可能)
  • エラーログによる変更履歴の記録

🚀 インストール方法

方法1: 手動インストール

  1. このリポジトリをダウンロード

    git clone https://github.com/yamasakidaisuke/user-read-management.git
  2. user-read-management フォルダを wp-content/plugins/ にアップロード

  3. WordPress管理画面の「プラグイン」メニューから「User Read Management」を有効化

方法2: 直接アップロード

  1. ZIPファイルとしてダウンロード
  2. WordPress管理画面 > プラグイン > 新規追加 > プラグインのアップロード
  3. ZIPファイルを選択してインストール・有効化

📖 使い方

ショートコードの使用

固定ページや投稿に以下のショートコードを追加:

[read_status_overview]

これにより、カテゴリーごとに分かれた読了状態マトリックス表が表示されます:

  1. 必読資料 セクション
  2. 診療マニュアル セクション
  3. 医療情報 セクション
  4. 研修医勉強会資料 セクション
  5. 青木先生による眼科講義 セクション

各セクションに全ユーザー×投稿のマトリックス表が表示されます。

投稿ページでの表示

特定カテゴリー(manuals, medical-information, essential_readings, resident-study-sessions, dr_aoki_archive および manuals の子カテゴリー)に属する投稿を表示すると、投稿コンテンツの下に「読みました」チェックボックスが自動的に表示されます。

CSVエクスポート(管理者・管理室)

読了状態一覧表の下部に「CSVエクスポート」ボタンが表示されます(管理者、または管理室ロールのユーザー)。

  1. ボタンをクリック
  2. CSVファイルが自動ダウンロード
  3. ファイル名: 20251110123456_end-of-reading-management.csv(タイムスタンプ付き)
  4. Excelで開くとそのまま日本語が正しく表示されます

👥 ユーザーロール設定(重要)

カスタムユーザーロールについて

このプラグインは以下の4つのカスタムユーザーロールを作成します:

  • 獣医師(bbPress権限) (veterinarian) - 読了管理表に表示されます
  • 看護師(bbPress権限) (nurse) - 将来の機能拡張用
  • 管理室(bbPress権限) (admin_office) - 将来の機能拡張用
  • 病院(bbPress権限) (hospital) - 将来の機能拡張用

重要: 各ロールにはbbPress登録ユーザーと同じ権限が自動的に付与されます。そのため、bbPress登録ユーザーから上記のロールに変更しても、フォーラム機能は引き続き使用可能です。

初期設定手順

1. プラグインを有効化

プラグインを有効化すると、上記のカスタムロールが自動的に作成されます。

2. ユーザーにロールを割り当て

WordPress管理画面で各ユーザーにロールを設定:

  1. ユーザー → ユーザー一覧 に移動
  2. 編集したいユーザーをクリック
  3. 権限グループ(または役割)のドロップダウンから適切なロールを選択
    • 獣医師の方 → 獣医師(bbPress権限)
    • 看護師の方 → 看護師(bbPress権限)
    • 管理室の方 → 管理室(bbPress権限)
    • 病院アカウント → 病院(bbPress権限)
  4. ユーザーを更新をクリック

注意: bbPress登録ユーザーから上記のロールに変更しても、bbPressフォーラムは引き続き使用できます。権限は自動的に引き継がれます。

3. 表示確認

読了管理ページ([read_status_overview]ショートコード)を確認すると、獣医師ロールのユーザーのみが表示されます。

表示するロールの変更方法

将来的に看護師も表示したい場合など、user-read-management.php の以下の部分を変更:

// 265行目付近
$users = get_users(array(
    'role' => 'veterinarian', // ← ここを変更
    'fields' => array('ID', 'display_name')
));

複数ロールを表示する場合:

// 獣医師と看護師を表示
$users = get_users(array(
    'role__in' => array('veterinarian', 'nurse'),
    'fields' => array('ID', 'display_name')
));

⚙️ その他のカスタマイズ設定

プラグインファイル(user-read-management.php)内で以下の設定を変更できます:

対象カテゴリーの設定

$show_checkbox_categories = array('manuals', 'medical-information', 'essential_readings', 'resident-study-sessions', 'dr_aoki_archive');

チェックボックスを非表示にするユーザーID

$hide_checkbox_users = array(1, 10);

一覧表示から除外するユーザーID

$exclude_user_ids = array(1, 10);

一覧表示から除外する投稿ID

$exclude_post_ids = array(0);

🔧 技術仕様

環境要件

  • WordPress 5.0 以上
  • PHP 7.0 以上
  • jQuery(WordPress同梱版)

データ構造

読了状態は WordPress の user_meta テーブルに保存されます:

meta_key: read_status_{post_id}
meta_value: 'read' または 'unread'

ファイル構成

user-read-management/
├── user-read-management.php  # メインプラグインファイル(PHP)
├── read-status.js             # フロントエンド JavaScript
└── README.md                  # このファイル

🎨 表示のカスタマイズ

CSSクラス

以下のクラスでスタイルをカスタマイズ可能:

  • .p-read-status - チェックボックスコンテナ
  • .p-read-status-input - チェックボックス要素
  • .p-read-status-label - ラベル要素
  • .p-read-status-table - 一覧表テーブル
  • .p-read-status-cell - 編集可能なセル
  • .p-read-status-cell-readonly - 表示のみのセル

📊 使用例

スタッフ向けマニュアル管理

  • 社内マニュアルを投稿として作成
  • スタッフが各マニュアルを読了したかを追跡
  • 管理者が全員の読了状況を一覧で確認

医療情報の確認管理

  • 重要な医療情報を投稿
  • 医療スタッフの既読状況を管理
  • コンプライアンス対応の記録として活用

🔒 セキュリティ

  • WordPress nonce による CSRF 対策
  • 権限チェック(current_user_can)
  • サニタイゼーション・エスケープ処理
  • エラーログによる監査証跡

🐛 トラブルシューティング

チェックボックスが表示されない

  1. ログインしているか確認
  2. 投稿が対象カテゴリーに属しているか確認
  3. 自分のユーザーIDが除外リストに含まれていないか確認

状態が保存されない

  1. ブラウザのコンソールでJavaScriptエラーを確認
  2. WordPress の wp_ajax が正常に動作しているか確認
  3. サーバーのエラーログを確認

📝 変更履歴

Version 2.1

  • 「研修医勉強会資料」「青木先生による眼科講義」カテゴリーを追加
    • 新カテゴリー resident-study-sessions(研修医勉強会資料)・dr_aoki_archive(青木先生による眼科講義)を対象カテゴリーに追加
    • 投稿ページでの読了チェックボックス表示
    • 読了状態一覧表に2セクションを最下部(医療情報の下)に追加
    • CSVエクスポートに2カテゴリーを追加
    • いずれも院内資料(hospital-information)の子で投稿は直下に入るため、子カテゴリー自動取得は不要

Version 1.9

  • 「必読資料」カテゴリーを追加
    • 新カテゴリー essential_readings(必読資料)を対象カテゴリーに追加
    • 投稿ページでの読了チェックボックス表示
    • 読了状態一覧表に「必読資料」セクションを追加(医療情報の下)
    • CSVエクスポートに「必読資料」カテゴリーを追加
  • デザインをプロフェッショナルに改善
    • セクション見出しのグラデーション背景をフラットな単色に変更
    • 角丸(border-radius)を全て除去
    • セルホバー時のスケールアニメーション(transform: scale)を除去
    • 装飾的なbox-shadowを除去し、シンプルなborderに変更
    • 固定列の影をborder-rightに変更

Version 1.8

  • overflow: hidden を削除して sticky を完全動作させる
    • .p-read-status-table から overflow: hidden を削除(sticky の妨げになっていた)
    • 角丸とシャドウをスクロールコンテナに移動(構造を明確化)
    • 不要な -webkit-sticky プレフィックスを削除
    • 不要な !important を削除してCSSをシンプル化
    • コメントを追加して再利用性を向上
    • これで position: sticky が確実に動作します

Version 1.7

  • テーブル構造を修正して固定機能を完全実装
    • <thead> と <tbody> タグを明示的に追加
    • border-collapse: separate に変更(sticky との互換性向上)
    • CSSセレクタを thead th に修正
    • z-indexを最適化(ヘッダー: 10、先頭列: 5、左上: 15)
    • Safari対応(-webkit-sticky)を追加
    • max-heightを900pxに変更
    • 先頭行と先頭列が確実に固定されるように改善

Version 1.6

  • スクロール固定機能を強化
    • スクロールコンテナに高さ制限(max-height: 600px)を追加
    • 横スクロール時に先頭列(投稿タイトル列)が確実に固定
    • 縦スクロール時にヘッダー行が確実に固定
    • ブラウザ全体ではなく表内でスクロール
    • 先頭列の背景色(シマシマ)を維持
    • ホバー効果も先頭列で正しく動作

Version 1.5

  • bbPress権限を自動付与
    • カスタムロール(獣医師、看護師、管理室、病院)にbbPress登録ユーザーと同じ権限を自動付与
    • bbPress登録ユーザーから各カスタムロールへの変更がスムーズに
    • フォーラム機能を維持したまま職種の区別が可能
    • ロール表示名に「(bbPress権限)」を追加して誤認識を防止
  • README.mdにbbPress権限の説明を追加

Version 1.4

  • カスタムユーザーロール機能を追加
    • 獣医師、看護師、管理室、病院の4つのカスタムロールを作成
    • 読了管理表に表示するユーザーを「獣医師のみ」に変更
    • プラグイン有効化/無効化でロールの自動作成/削除
    • 将来的に複数ロール表示への拡張が容易
  • README.mdにユーザーロール設定手順を追加

Version 1.3

  • 表のデザインを大幅改善
    • シマシマ背景(ゼブラストライプ)で行を見やすく
    • 行全体のホバー効果(水色のハイライト)
    • 編集可能なセルの拡大ホバー効果(黄色のハイライト)
    • グラデーション付きカテゴリー見出し(紫系)
    • ダークカラーのヘッダー行(#2c3e50)
    • 読了済み(緑色)と未読(赤色)の色分け強化
    • 表全体にシャドウと角丸を追加

Version 1.2

  • 読了状態一覧表を2つのカテゴリー別に分割表示
    • 「診療マニュアル」(manuals)
    • 「医療情報」(medical-information)
  • CSVエクスポートにカテゴリー列を追加
  • 見やすいセクション見出しを追加

Version 1.1

  • CSVエクスポート機能を追加(管理者のみ)
  • タイムスタンプ付きファイル名でダウンロード
  • Excel対応(UTF-8 BOM付き)

Version 1.0

  • 初回リリース
  • 読了チェックボックス機能
  • 読了状態一覧表示機能
  • 管理者による他ユーザー状態編集機能
  • 全ユーザーが全員分の読了状態を閲覧可能

👤 作者

Daisuke Yamasaki

📄 ライセンス

このプロジェクトは GPL v2 以降のライセンスの下で公開されています。

🤝 貢献

バグ報告や機能リクエストは、GitHub Issuesにてお願いします。

プルリクエストも歓迎します!

🔗 リンク


Made with ❤️ for WordPress