Lab Achievements Manager self-updates
Wordpress用の業績管理プラグイン
by KSHCI Lab · github.com/dbym4820/wp_lab_achievement · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/dbym4820/wp_lab_achievement/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
研究室の業績(論文・発表)をカスタムDBテーブルで管理し,年度・種別フィルタ付きで表示する WordPress プラグイン.
機能一覧
管理画面
| 機能 | 説明 |
|---|---|
| 業績一覧 | 登録済み業績の一覧表示.年度・種別でフィルタ,キーワード検索,一括削除が可能 |
| 新規追加 / 編集 | 著者・タイトル・誌名・巻号・DOI 等の書誌情報を入力して業績を登録・更新 |
| CSV インポート | CSV ファイルから業績を一括登録(1行目はヘッダー) |
| CSV エクスポート | 全業績を CSV ファイルとしてダウンロード(UTF-8 BOM 付き,Excel 対応) |
フロントエンド(ショートコード)
| ショートコード | 説明 |
|---|---|
[lab_achievements] |
年度別・種別別にグループ化した業績一覧を表示 |
[lab_awards] |
受賞業績のみを一覧表示 |
[lab_achievements] の属性
| 属性 | デフォルト | 説明 |
|---|---|---|
year |
(空) | 特定年度のみ表示(例: year="2025") |
type |
(空) | 特定の業績種別のみ表示(例: type="journal") |
show_filter |
true |
フィルタ UI の表示/非表示("true" / "false") |
[lab_awards] の属性
| 属性 | デフォルト | 説明 |
|---|---|---|
year |
(空) | 特定年度のみ表示 |
type |
(空) | 特定の業績種別のみ表示 |
フロントエンドのインタラクティブ機能
- 年度フィルタ: プルダウンで年度を選択して絞り込み
- 種別フィルタ: プルダウンで業績種別を選択して絞り込み
- 受賞のみ表示: チェックボックスで受賞業績だけに絞り込み
- 年度区切りなし表示: チェックボックスで種別のみのフラットなグループ表示に切替
- 年度ページ内リンク: 年度ナビゲーションバーから各年度セクションへジャンプ
- 折りたたみ: 各年度セクションは
<details>タグで開閉可能
業績種別とキー
lam_achievement_types() 関数で定義される.配列の順序がそのまま表示順序になる.
| キー | 日本語ラベル | 表示順 |
|---|---|---|
journal |
学術論文 | 1 |
letter |
レター論文 | 2 |
review |
解説論文 | 3 |
book |
書籍 | 4 |
international |
国際会議 | 5 |
sig |
研究会 | 6 |
others |
全国大会・その他 | 7 |
misc |
寄稿 | 8 |
カスタマイズ
業績種別の追加・変更
lam_achievement_types() 関数(lab-achievements-manager.php 冒頭)の配列を編集する.
function lam_achievement_types() {
return array(
'journal' => '学術論文',
'letter' => 'レター論文',
'review' => '解説論文',
'book' => '書籍',
'international' => '国際会議',
'sig' => '研究会',
'others' => '全国大会・その他',
'misc' => '寄稿',
);
}
- 種別を追加: 配列に
'新キー' => '表示ラベル'を追加 - 表示ラベルを変更: 値(日本語部分)を書き換える
- 種別を削除: 対応する行を削除(既存データの
achievement_typeが残るため注意)
表示順序の変更
表示順序は 2箇所 を揃えて変更する必要がある.
1. lam_achievement_types() の配列順
この配列の定義順がフィルタ UI のプルダウン順序,およびグループ表示時のセクション順序に反映される.
2. SQL の FIELD() 句
ショートコード内の SQL クエリにある FIELD(achievement_type, ...) の引数順を,lam_achievement_types() と同じ順序に揃える.
該当箇所はファイル内に 2箇所ある.
[lab_achievements]用:lam_shortcode()関数内[lab_awards]用:lam_awards_shortcode()関数内
ORDER BY fiscal_year DESC,
FIELD(achievement_type,'journal','letter','review','book','international','sig','others','misc'),
pub_month ASC, sort_order DESC
FIELD() の引数順を変えると,データベースからの取得順が変わる.
各業績のソート順(sort_order フィールド)
同一年度・同一種別内での細かい並び替えには sort_order フィールドを使う.管理画面の「表示順」で設定する.[lab_achievements] では sort_order DESC(大きい値が上),[lab_awards] では sort_order ASC(小さい値が上)で並ぶ.
年度の計算ルール
出版月が 1〜3月の場合,年度は 出版年 - 1 として自動計算される(4月始まりの日本の年度制度に準拠).管理画面で年度を手動入力した場合はそちらが優先される.
スタイルのカスタマイズ
CSS はプラグイン内の lam_enqueue_frontend() 関数でインラインスタイルとして出力される.主要な CSS クラス:
| クラス | 対象 |
|---|---|
.lab-achievements-container |
全体のコンテナ |
.lab-achievements-filters |
フィルタ UI 領域 |
.lab-achievements-year-nav |
年度ナビゲーションバー |
.lab-achievements-year-heading |
年度見出し(グラデーション背景) |
.lab-achievements-type-heading |
業績種別見出し(左ボーダー) |
.lab-achievements-list |
業績リスト(<ol>) |
.lab-achievement-item |
個別業績(<li>) |
.lab-ach-award |
受賞バッジ |
.lab-ach-doi / .lab-ach-link |
DOI / URL リンク |
データベース
プラグイン有効化時にカスタムテーブル {prefix}_lab_achievements が作成される.
| カラム | 型 | 説明 |
|---|---|---|
id |
bigint(20) | 主キー(AUTO_INCREMENT) |
achievement_type |
varchar(50) | 業績種別キー |
authors |
text | 著者(カンマ区切り) |
title |
text | タイトル |
venue |
text | 発表場所 |
journal_name |
varchar(500) | 誌名 / 会議名 |
volume |
varchar(50) | 巻 |
number |
varchar(50) | 号 |
pages |
varchar(50) | ページ |
pub_year |
smallint(4) | 出版年 |
pub_month |
tinyint(2) | 出版月 |
fiscal_year |
smallint(4) | 年度 |
is_awarded |
tinyint(1) | 受賞フラグ(0/1) |
award_name |
varchar(500) | 受賞名 |
awardee |
varchar(500) | 受賞者(著者と異なる場合) |
doi |
varchar(255) | DOI |
url |
varchar(500) | URL |
notes |
text | 備考 |
sort_order |
int(11) | 表示順(同一種別内) |
created_at |
datetime | 作成日時 |
updated_at |
datetime | 更新日時 |
CSV フォーマット
インポート時の CSV 列順(ヘッダー行必須):
achievement_type, authors, title, venue, journal_name, volume, number, pages,
pub_year, pub_month, fiscal_year, is_awarded, award_name, awardee, doi, url, notes, sort_order
achievement_typeは英語キー(journal,book等)でも日本語ラベル(学術論文,書籍等)でも可fiscal_yearが空の場合,pub_yearとpub_monthから自動計算される- エクスポート CSV には
id列が含まれるが,インポート時は無視される
自動アップデート
GitHub Releases を利用した自動アップデートに対応している.WordPress 管理画面の「更新」やプラグイン一覧から,通常のプラグインと同様にワンクリックで更新できる.
仕組み
- GitHub API (
/repos/dbym4820/wp_lab_achievement/releases/latest) で最新リリースを12時間ごとにチェック - リリースタグのバージョンがインストール済みバージョンより新しい場合,WordPress に更新通知が表示される
- アップデーターは管理画面でのみ読み込まれる(フロントエンドには影響なし)
新バージョンのリリース手順
lab-achievements-manager.phpの 2箇所 のバージョンを更新するLAM_VERSION定数(例:'1.1.0')- プラグインヘッダーの
Version:行(例:Version: 1.1.0)
- 変更をコミット & プッシュ
- GitHub で Release を作成し,タグを付ける(例:
v1.1.0)- タグは
v+ セマンティックバージョニング形式(v1.0.0,v1.1.0,v2.0.0等) - Release の本文に変更内容を記載すると,WordPress の「詳細を表示」に changelog として表示される
- タグは
- WordPress 管理画面 > 更新 で自動検知される
設定の変更
GitHub リポジトリの情報は lab-achievements-manager.php 冒頭の定数で管理される:
define( 'LAM_GITHUB_OWNER', 'dbym4820' ); // GitHub オーナー名
define( 'LAM_GITHUB_REPO', 'wp_lab_achievement' ); // GitHub リポジトリ名
リポジトリを移行した場合はこれらを変更する.
動作要件
- WordPress 5.0 以上
- PHP 7.0 以上
ライセンス
GPL-2.0+