Persian Project Management
افزونه مدیریت پروژه فارسی برای وردپرس — پروژه، وظیفه، کانبان، تقویم جلالی و داشبورد شاخصها داخل پیشخوان. Persian-first WordPress project management plugin.
by Alireza Aminzadeh · github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin/releases/download/v2.1.0/persian-project-management.2.1.0.zip

Persian Project Management
Persian-first project management for WordPress — projects, tasks, a Trello-style Kanban board, a Jalali/Gregorian work calendar, KPI charts, and CSV export, entirely inside wp-admin.
مدیریت پروژهٔ فارسی برای وردپرس — پروژه، وظیفه، بورد کانبان، تقویم کاری شمسی/میلادی، داشبورد شاخصها و خروجی CSV، همگی داخل پیشخوان.
| Repository | github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin |
| Author | Alireza Aminzadeh |
| WordPress.org copy | readme.txt (plugin directory header, tags, FAQ) |
| Directory graphics | .wordpress-org/ — WordPress.org /assets icons & banners; GitHub social card: docs/social-preview.png |
| License | GPL-2.0-or-later |
| Requires | WordPress 6.2+, PHP 7.4+ |
| Current version | 2.1.0 |
Who it is for: Persian/Farsi teams that want lightweight PM without leaving WordPress — RTL layout, Vazirmatn typography, Jalali pickers, Saturday-first calendar week — while dates stay Gregorian Y-m-d in the database for APIs and exports.
What it is not: There is no frontend UI, no shortcodes, and no Gutenberg blocks. Team and Reports admin menus are placeholders for later releases.
Table of contents / فهرستEnglish: Overview · Dashboard · Projects · Tasks · Kanban · Calendar · Settings · Security · Data · Hooks · FAQ · Privacy · Installation
فارسی: معرفی · داشبورد · پروژهها · وظایف · کانبان · تقویم · تنظیمات · امنیت · داده · سوالات متداول · حریم خصوصی · نصب
Overview & features (English)
Persian Project Management is a WordPress plugin that adds a Persian-first, RTL-oriented project workspace entirely inside wp-admin. It is aimed at teams that want lightweight PM (projects, tasks, deadlines, and a shared board) without leaving WordPress, with strings and layout tuned for Persian/Farsi users.
Data model: Projects and tasks live in custom tables (wp_ppm_projects, wp_ppm_tasks with your table prefix), not in posts—so lists stay fast and the schema stays explicit. Schema migrations run on plugins_loaded via an internal ppm_db_version flag and dbDelta.
Admin UX: The plugin ships RTL layouts, the Vazirmatn web font (bundled), scoped CSS under plugin wrappers, optional per-screen background colors, and a configurable primary sidebar (show/hide per screen) plus optional logo, organization name, and tagline in the header.
Top-level menu (مدیریت پروژه): Dashboard → Projects → Team (placeholder) → Tasks/Kanban → Work calendar → Reports (placeholder) → Settings. Hidden items (linked from the UI): New project, Edit project, and the Tasks list (capability-gated). The WordPress admin menu uses dashicons-networking, position 26, with Dashicon prefixes on submenu labels.
Persian calendar stack: Project create/edit flows and the work calendar use bundled persian-date and JalaliDatePicker where dates are picked or displayed in Jalali; the backend stores Gregorian Y-m-d for consistency.
Third-party assets (bundled in assets/vendor/): Vazirmatn, Chart.js 4.4.1 (dashboard charts only), Persian Date, JalaliDatePicker—loaded only on relevant screens. No remote CDN.
Asset loading: Plugin CSS/JS enqueue only on PPM admin screens (cache-bust via filemtime). A small admin-menu stylesheet loads for users with ppm_view_projects so submenu Dashicons size correctly. wp_enqueue_media() runs on settings, new-project, and project-edit when the user may manage projects.
Summary table
| Area | What you get |
|---|---|
| Projects | CRUD, archive, delete (with nonce), list table with search/filter/sort/pagination, bulk archive, CSV export, extended meta_json (team, 5 phases, colors, logo, file attachments) |
| Projects UI | Grid + list toggle (remembered in localStorage), KPI strip, deadline alerts, #PRJ-xxx cards, progress stepper, copy edit link |
| Tasks | Per-project lists, open/closed, Kanban column key, optional due date, quick-add, close/delete, pagination |
| Kanban | One cross-project board, up to 12 configurable columns, drag-and-drop (jquery-ui-sortable), quick add, card modal, AJAX move/save/delete |
| Notebook | New-project wizard (create or save draft), archived projects browser, team/resources directory |
| Calendar | Merged project ranges + task due dates; filters by type and project; Jalali/Gregorian toggle; REST GET /wp-json/ppm/v1/calendar-events and wp_ajax_ppm_calendar_events fallback |
| Appearance | Brand banner + sidebar logo, per-screen colors, Kanban backdrop (color, image, optional overlay) |
| Security | Capabilities ppm_manage_projects, ppm_view_projects, ppm_manage_tasks; nonces on forms and AJAX |
| Extensibility | Filter ppm_projects_total_budget_display for dashboard/list budget card text |
| Scope | Admin-only (no shortcodes/blocks/frontend). Team and Reports menus are placeholders |
Admin experience & appearance
- RTL layout and Persian strings across plugin screens (text domain:
persian-project-management). - Primary sidebar navigation on supported screens; each screen can show or hide the sidebar from Settings → Sidebar.
- Branding: optional custom logo (media library), organization name, and tagline in the header; falls back to site title / WordPress branding when empty.
- Per-screen background colors for
#wpbody-contenton whitelisted admin pages (Settings → Screens). - Team Kanban backdrop: optional solid color and/or background image from the media library (Settings → Kanban).
- Brand banner (logo + organization name + optional tagline) on dashboard, lists, Kanban, calendar, settings, placeholders, and project screens.
- Logo fallback chain: custom attachment → Site Icon → core WordPress
w-logo-blue.png. - Company name max 120 characters; tagline max 220. Empty name uses
bloginfo('name'). - Settings UI uses ARIA tabs; viewers can open Settings, but saving requires
ppm_manage_projects. - Hex colors are sanitized (
#RRGGBB); optional HTML color picker plus text field.
Dashboard
- User strip: display name and WordPress role label.
- Quick project search in the top bar (submits to the projects list).
- Hero shortcuts to projects list, tasks list, new project (if allowed), and team Kanban.
- KPI cards: all projects (including archived), active projects with “created this month”, overdue projects (past end date), active projects without an owner, and a budget / spend summary card (integrators can supply a value via the
ppm_projects_total_budget_displayfilter). - Deadline alerts for projects ending within the next 7 days, with links into project view and overdue / upcoming labels.
- Charts (Chart.js): project status distribution (non-archived), active projects per owner (top eight managers), 12‑month trend (created vs completed by update month), and open vs closed tasks.
- Average progress of active (non-completed, non-archived) projects shown above the chart grid (one decimal).
- Activity columns: up to 5 projects owned by the current user, 5 recently updated open tasks (with project title), and 5 recently updated non-archived projects.
- Shortcuts card plus CSV export of projects (managers only) from the dashboard.
- Deadline banner on the dashboard is capped at 8 rows, with a link to the full projects list. Chart.js is enqueued only on the dashboard screen.
Projects
- List view with table UX: search, filters, column sorting, pagination, and CSV export (via dashboard / list actions as implemented).
- Project fields: title, slug, status (
draft,planning,in_progress,on_hold,completed), owner (WordPress user), start/end dates, progress (0–100), category, tags, archived flag. - Extended metadata (stored in
meta_json): team members with optional role labels; five project phases (initiation → closing) each with optional date range; visual identity (project logo, primary/secondary colors); file attachments (media IDs). - Create project: multi-step style flow with date picking (Jalali-oriented UI where provided).
- Edit / view modes for a single project; viewers with view-only capability see read-only summaries for extended fields.
- Architecture notebook side navigation on notebook flows: new project, archive notebook view, resources notebook view, plus a link to the work calendar (when the user may view projects).
- Grid vs list: default card grid (code
#PRJ-xxx, status badge, 5-step visual stepper from progress, progress bar, owner, due date, avatars) plus classic WP_List_Table. Toggle is stored inlocalStoragekeyppm_projects_view. - Grid “add project” card for users who can manage projects.
- Filters: status, category (distinct stored values), owner (including unassigned), end-date from/to, archived (
0/1/all). Search matches project title. - Sortable columns: title, status, start, end, progress. Extra column: open task count per project.
- Row actions: view, tasks for this project, edit, archive, delete (nonce), copy edit URL (Clipboard API with prompt fallback).
- KPI + deadline alerts also appear on the projects screen (active / overdue / budget card).
- CSV: UTF-8 with BOM (Excel-friendly), respects current list filters, cap 5000 rows, filename
ppm-projects-YYYY-MM-DD.csv. Columns:id,title,status,owner_user_id,date_start,date_end,progress,category,tags,archived. Requiresppm_manage_projects. - Unique slug auto-generated from the title (
sanitize_title, suffix-2,-3, …). - Save as draft on the new-project notebook (
ppm_submit=draft); empty title becomes “پیشنویس بدون عنوان”; status forced todraft. - Phase dates fill empty project
date_start/date_endfrom the first start and last end among the five phases. - Deleting a project also deletes its tasks (cascade in
PPM_Projects_Repository::delete). - Notebook → بایگانی: archived projects with title search, 12 per page, link to the filtered table view.
- Notebook → منابع: WordPress users who have
ppm_view_projectsorppm_manage_projects(avatar, role label, email, “project manager” badge). - Team rows: add/remove members in the UI; role labels max 80 characters; duplicate user IDs skipped. Attachments picked from the media library (multiple); logo from image attachments. 3-digit hex colors expanded to 6-digit.
Tasks
- Per-project task list screen from the admin flow.
- Task model: title, open/closed status, Kanban column key, optional due date (
Y-m-d). - Filtering tasks by project where the UI supports it.
- Hidden admin page
persian-project-management-tasks(not in the top-level submenu; opened from dashboard, project rows, Kanban, and calendar). - Quick add when a project filter is active (title + optional due date); requires
ppm_manage_tasks. - Close (open → closed) and delete with per-task nonces; pagination 20 per page.
- Default Kanban column for new tasks is the board’s fallback column (first defined column, typically
waiting).
Team Kanban
- Single board aggregating tasks across projects for users who can view projects.
- Configurable columns (up to 12): custom keys, titles, and per-column “quick add” visibility; defaults map to waiting / in progress / review-style columns.
- Drag-and-drop cards between columns with AJAX (
ppm_kanban_move_card). - Card editor modal: update fields such as title and due date (
ppm_kanban_save_cardwith per-task nonces). - Delete tasks from the board via AJAX (
ppm_kanban_delete_card). - Custom backdrop (color + image) as above.
- Board shows open tasks only, joined to non-archived projects. Cards show project tag (truncated/uppercased title), project progress bar, due date (or last update date), and a link to that project’s task list.
- Column manager on the board (users with
ppm_manage_tasks): rename, add, remove, toggle “quick add” per column. Titles max 120 characters; at least one column required. Removing a column reassigns its open tasks to the first remaining column. Stored in optionppm_kanban_column_layout. Default keys:waiting(لیست انتظار),in_progress(در حال انجام),review(بازبینی). New custom keys look likecol_xxxxxxxxxx. - Hero stats: total open tasks on the board and column count.
- Quick-add composer: pick project, title, optional due date, target column. Archived projects cannot receive new cards.
- Modal can reassign the task to another active project.
- GET fallbacks (no JS):
ppm_kanban_action=move|deletewith nonces, for environments where AJAX is blocked. - Anyone who can view the board may drag/edit/delete cards (
current_user_can_team_kanban_task_crudmatches view). Column layout save still requires manage tasks. - Color + image together apply a ~38% color overlay on the image. Reset backdrop from Settings or the Kanban appearance form.
Work calendar
- Unified calendar built from project date ranges and task due dates (Gregorian
Y-m-din the backend; the calendar UI may present Jalali dates). - Filters in the UI/API layer: event types (
all,projects,tasks) and optionalproject_idscoping. - REST:
GET /wp-json/ppm/v1/calendar-eventswith authenticated users who pass the permission callback. - Admin AJAX endpoint for loading events in the calendar screen without full page reload.
- Jalali / Gregorian month views; preference stored in
localStorage(ppm_cal_jalali). Iranian week: Saturday first → Friday last (weekStartDay= 6). - Toolbar: previous / today / next month, type filter, project filter, calendar-system toggle. Day details sidebar with event list; “more” overflow on busy days.
- Legend: in-progress projects (emerald), planning/other (sky), overdue projects (rose), tasks (violet), overdue tasks (orange). Accents also cover completed (slate), on-hold (amber), draft (zinc).
- Project events: only non-archived rows with a start and/or end date; single-sided ranges collapse to one day; reversed start/end swapped. Overdue = end date before today and status not
completedordraft. - Task events: open tasks with a
due_dateon non-archived projects. Links: edit project, project tasks, Kanban. - Invalid
from/to(notY-m-d, or from > to) returns HTTP 400 on REST and AJAX.
Settings
Three tabs (save requires manage projects capability where enforced):
- Sidebar — per-screen sidebar visibility, logo, company name, tagline.
- Kanban — board backdrop color and image.
- Screens — content background color per allowed admin slug.
- Tab key in the URL:
ppm_tab=sidebar|kanban|screens(default sidebar). - Reset Kanban backdrop and clear all screen colors without wiping the other tab’s options.
- Screen color whitelist includes dashboard, projects, tasks, team, Kanban, calendar, reports, settings, new project, and edit project.
- Sidebar visibility keys (default: all on): dashboard, projects, tasks, team, team_kanban, work_calendar, reports, settings, project_new, project_edit.
Security & roles
- Custom capabilities:
ppm_manage_projects,ppm_view_projects,ppm_manage_tasks(assigned to Administrator on activation / upgrade). - Nonces on AJAX and settings forms; capability checks on screens and API callbacks.
- Caps are not assigned to Editor (or other roles) automatically; use a role editor or custom code.
ppm_view_projectsorppm_manage_projectsgrants view.ppm_manage_tasksorppm_manage_projectsgrants task management on the list screen.- Attachment IDs must be real
attachmentposts (images for logos/Kanban backdrop). User IDs for team/owner must exist. - Submenu Dashicon HTML is passed through
wp_kses. Redirects usewp_safe_redirect. CSV and settings posts useadmin-post.php+ nonces. - REST calendar: logged-in users only, permission
ppm_view_projects. AJAX handlers arewp_ajax_*(nonopriv).
Data layer
- Tables:
{prefix}ppm_projects,{prefix}ppm_tasks(created/updated withdbDelta). - Internal DB version option
ppm_db_version;maybe_upgraderuns onplugins_loadedto align schema. - Current schema flag:
1.3.0(PPM_Activator::DB_VERSION).meta_jsonis encoded withJSON_UNESCAPED_UNICODE. - Projects indexes: unique
slug;status_archived;owner_user_id;date_end. - Tasks indexes:
project_id;project_status;kanban_status;due_date. - Task
due_datereads are guarded if the column is missing (pre-upgrade installs).
List & workflow extras
- Projects list: WordPress screen option
ppm_projects_per_page(default 20) controls pagination. - Bulk actions: Bulk archive selected projects (requires
ppm_manage_projects), withbulk-projectsnonce. - Success notices for delete / archive / bulk archive (
ppm_msgquery args). - Checkbox column is hidden for users who cannot manage projects (no bulk archive).
Developer hooks & AJAX (logged-in admin)
| Kind | Name / endpoint | Notes |
|---|---|---|
| Filter | ppm_projects_total_budget_display |
Return HTML or plain text for the budget KPI card on dashboard and projects list (empty string = hidden/minimal). |
| REST | GET /wp-json/ppm/v1/calendar-events |
Query: from, to (required), optional project_id, types (all | projects | tasks). Permission: ppm_view_projects. |
| AJAX | ppm_calendar_events |
Same calendar payload when REST/plain permalinks are problematic; capability check + nonce as implemented. |
| AJAX | ppm_kanban_move_card, ppm_kanban_save_card, ppm_kanban_delete_card |
Kanban DnD, modal save, delete; nonces and capability checks in PPM_Kanban_Ajax. |
admin_post |
ppm_export_projects |
CSV download. |
admin_post |
ppm_save_project |
Create/update project. |
admin_post |
ppm_save_task |
Quick-add task on the tasks screen. |
admin_post |
ppm_save_plugin_settings |
Kanban appearance + per-screen colors. |
admin_post |
ppm_save_kanban_appearance |
Kanban backdrop from the board screen. |
admin_post |
ppm_save_kanban_quick_task |
Quick-add card. |
admin_post |
ppm_kanban_update_task |
Classic POST update of a card (non-AJAX). |
admin_post |
ppm_save_kanban_columns |
Column layout. |
admin_post |
ppm_save_sidebar_settings |
Sidebar visibility + branding. |
Not yet implemented (placeholders)
- Team top-level menu: placeholder screen.
- Reports top-level menu: placeholder screen.
معرفی و امکانات (فارسی)
مدیریت پروژه فارسی (Persian Project Management) افزونهای برای وردپرس است که کل فضای مدیریت پروژه را داخل پیشخوان (wp-admin) میآورد—مناسب تیمهایی که میخواهند پروژه، وظیفه، مهلت و یک بورد مشترک را بدون ابزار جدا از وردپرس دنبال کنند، با اولویت رابط فارسی و چیدمان راستبهچپ.
این افزونه دقیقاً چه کاری میکند؟
- ذخیرهٔ داده جدا از نوشتهها: پروژهها و وظایف در جداول اختصاصی (با پیشوند جدول وردپرس، مثلاً
wp_ppm_projectsوwp_ppm_tasks) نگهداری میشوند تا لیستها سبک بمانند و ساختار داده شفاف باشد. با فعالسازی و بهروزرسانی افزونه، اسکیما باdbDeltaو گزینهٔppm_db_versionهمتراز میشود. - تجربهٔ بصری فارسی: فونت وزیرمتن همراه افزونه، استایلهای محدود به ناحیهٔ افزونه، و در صورت تمایل رنگ پسزمینهٔ جداگانه برای هر صفحهٔ مجاز و نوار کناری قابل تنظیم (نمایش/مخفی per-screen) بههمراه لوگو، نام سازمان و شعار در هدر.
- منوی اصلی پیشخوان: زیرمنوی «مدیریت پروژه» شامل: داشبورد، پروژهها، تیم (فعلاً صفحهٔ جاینگهدار)، وظایف/کانبان، تقویم کاری، گزارشها (جاینگهدار)، تنظیمات. صفحات پروژه جدید، ویرایش پروژه و لیست وظایف بهصورت آیتم مخفی منو هستند و از داخل رابط لینک میشوند. آیکون منو dashicons-networking و موقعیت ۲۶ است.
- تقویم شمسی در جریان کاری: در مسیرهای ایجاد/ویرایش پروژه و تقویم کاری از persian-date و jalalidatepicker استفاده میشود؛ در بکاند تاریخها بهصورت میلادی
Y-m-dذخیره میشوند تا گزارشگیری و API یکدست بماند. - داراییهای شخص ثالث: وزیرمتن، Chart.js (فقط داشبورد) و کتابخانههای تاریخ شمسی داخل
assets/vendor/همراه افزونه هستند و از CDN بارگذاری نمیشوند. - بارگذاری دارایی: CSS/JS افزونه فقط روی صفحات PPM (نسخهگذاری با
filemtime). استایل کوچک منو برای کاربران دارای مشاهدهٔ پروژه. کتابخانهٔ رسانه روی تنظیمات، پروژهٔ جدید و ویرایش (در صورت مجوز مدیریت). - محدوده: فقط پیشخوان؛ شورتکد، بلوک گوتنبرگ و رابط فرانتاند وجود ندارد.
جدول خلاصهٔ امکانات
| بخش | امکانات کلیدی |
|---|---|
| پروژهها | ایجاد، ویرایش، مشاهده، حذف و آرشیو (با nonce)، لیست با جستجو، فیلتر، مرتبسازی، صفحهبندی، آرشیو گروهی، خروجی CSV، فیلدهای گسترده در meta_json (تیم، پنج فاز، رنگ و لوگو، پیوست) |
| رابط پروژهها | نمای شبکه + فهرست (ذخیره در localStorage)، کارت KPI، هشدار مهلت، کد #PRJ-xxx، استپر پیشرفت، کپی لینک ویرایش |
| وظایف | لیست در سطح پروژه، وضعیت باز/بسته، ستون کانبان، تاریخ سررسید اختیاری، افزودن سریع، بستن/حذف، صفحهبندی |
| کانبان تیمی | یک بورد برای همهٔ پروژههای قابلمشاهده، حداکثر ۱۲ ستون قابل تنظیم، کشیدنورها با jQuery UI Sortable، افزودن سریع و مودال ویرایش، بهروزرسانی با AJAX |
| دفترچه معماری | ویزارد پروژهٔ جدید (ایجاد یا پیشنویس)، مرور بایگانی، دایرکتوری منابع/تیم |
| تقویم کاری | ترکیب بازهٔ پروژه و سررسید وظایف؛ فیلتر نوع و پروژه؛ تغییر نمای شمسی/میلادی؛ REST و در صورت نیاز admin-ajax |
| ظاهر | بنر برند + لوگوی نوار، رنگ هر صفحه، پسزمینهٔ کانبان (رنگ، تصویر، پوشش نیمهشفاف) |
| امنیت | قابلیتهای سفارشی و nonce روی فرمها و AJAX |
| توسعه | فیلتر ppm_projects_total_budget_display برای متن کارت بودجه در داشبورد/لیست |
| محدوده | فقط ادمین (بدون شورتکد/بلوک). منوی تیم و گزارشها جاینگهدار است |
تجربهٔ ادمین و ظاهر
- چیدمان RTL و رشتههای ترجمهشده در صفحات افزونه (دامنهٔ متن:
persian-project-management). - نوار کناری ناوبری در صفحات پشتیبانیشده؛ برای هر صفحه میتوان نمایش یا عدم نمایش نوار را از تنظیمات → نوار کناری تعیین کرد.
- برندینگ: لوگوی سفارشی (از رسانه)، نام سازمان و شعار در هدر؛ در صورت خالی بودن از عنوان سایت / برند وردپرس استفاده میشود.
- رنگ پسزمینهٔ محتوا بهصورت جداگانه برای هر صفحهٔ مجاز ادمین (تنظیمات → صفحات).
- پسزمینهٔ کانبان: رنگ و/یا تصویر پسزمینه از کتابخانهٔ رسانه (تنظیمات → کانبان).
- بنر برند (لوگو + نام سازمان + شعار اختیاری) روی داشبورد، لیستها، کانبان، تقویم، تنظیمات، جاینگهدارها و صفحات پروژه.
- زنجیرهٔ پیشفرض لوگو: پیوست سفارشی → نماد سایت → لوگوی آبی هستهٔ وردپرس.
- نام سازمان حداکثر ۱۲۰ نویسه؛ شعار حداکثر ۲۲۰. نام خالی = عنوان سایت.
- تبهای تنظیمات با ARIA؛ مشاهده برای دارندگان مجوز مشاهده، ذخیره فقط با مدیریت پروژه.
- رنگها بهصورت
#RRGGBBپاکسازی میشوند (انتخابگر رنگ + فیلد متن).
داشبورد
- نوار کاربر: نام نمایشی و برچسب نقش وردپرس.
- جستجوی سریع عنوان پروژه در نوار بالا (هدایت به لیست پروژهها).
- میانبرهای قهرمان: لیست پروژهها، لیست وظایف، پروژهٔ جدید (در صورت مجوز)، کانبان تیمی.
- کارتهای شاخص: همهٔ پروژهها (شامل آرشیو)، پروژههای فعال بههمراه «ایجادشده این ماه»، پروژههای با تأخیر (سررسید گذشته)، پروژههای فعال بدون مالک، و کارت بودجه / هزینه (توسعهدهندگان میتوانند مقدار نمایشی را با فیلتر
ppm_projects_total_budget_displayوارد کنند). - هشدار مهلت برای پروژههایی که در ۷ روز آینده به پایان میرسند، با لینک به نمای پروژه و برچسب سررسید نزدیک / گذشته.
- نمودارها (Chart.js): توزیع وضعیت پروژه (غیرآرشیو)، تعداد پروژهٔ فعال بهازای مدیر (۸ مدیر اول)، روند ۱۲ ماه (ایجاد در مقابل تکمیل بر اساس ماه بهروزرسانی)، و وظایف باز در مقابل بسته.
- میانگین پیشرفت پروژههای فعال (غیرتمامشده و غیرآرشیو) بالای نمودارها (یک رقم اعشار).
- ستون فعالیت: تا ۵ پروژهٔ تحت مدیریت کاربر جاری، ۵ وظیفهٔ باز اخیر، و ۵ پروژهٔ اخیراً بهروزشده.
- کارت میانبر بههمراه خروجی CSV (فقط مدیران پروژه). بنر مهلت داشبورد حداکثر ۸ ردیف. Chart.js فقط روی داشبورد بار میشود.
پروژهها
- لیست با جدول ادمین: جستجو، فیلتر، مرتبسازی ستون، صفحهبندی و خروجی CSV (طبق پیادهسازی در لیست / داشبورد).
- فیلدها: عنوان، اسلاگ، وضعیت (
draft،planning،in_progress،on_hold،completed)، مالک (کاربر وردپرس)، تاریخ شروع/پایان، درصد پیشرفت، دسته، برچسبها، پرچم آرشیو. - متادیتای گسترده (در
meta_json): اعضای تیم با نقش اختیاری؛ پنج فاز مدیریت پروژه هر کدام با بازهٔ تاریخ اختیاری؛ هویت بصری (لوگو، رنگ اصلی/ثانویه)؛ پیوستهای فایل (شناسهٔ رسانه). - ایجاد پروژه: جریان چندمرحلهای با انتخاب تاریخ (رابط تاریخ شمسی جایی که پیادهسازی شده).
- حالتهای ویرایش / مشاهده؛ کاربران فقط-مشاهده خلاصهٔ فقط-خواندنی فیلدهای گسترده را میبینند.
- دفترچه معماری در نوار کناری جریان دفترچه: پروژه جدید، نمای بایگانی، نمای منابع، و لینک به تقویم کاری (در صورت مجوز مشاهدهٔ پروژه).
- شبکه در برابر فهرست: پیشفرض کارت شبکهای (کد
#PRJ-xxx، نشان وضعیت، استپر پنجمرحلهای از روی پیشرفت، نوار پیشرفت، مدیر، تاریخ تحویل، آواتار) بهعلاوهٔ جدول کلاسیک وردپرس. انتخاب نما درlocalStorageبا کلیدppm_projects_viewذخیره میشود. - کارت افزودن پروژه در نمای شبکه برای مدیران پروژه.
- فیلترها: وضعیت، دسته (مقادیر ذخیرهشده)، مسئول (از جمله بدون مسئول)، بازهٔ تاریخ پایان، آرشیو (
0/1/all). جستجو روی عنوان پروژه. - مرتبسازی: عنوان، وضعیت، شروع، پایان، پیشرفت. ستون اضافه: تعداد وظایف باز.
- اقدام ردیف: مشاهده، وظایف این پروژه، ویرایش، آرشیو، حذف (nonce)، کپی لینک ویرایش.
- کارتهای KPI و هشدار مهلت در صفحهٔ پروژهها هم نمایش داده میشوند.
- CSV: UTF-8 با BOM (سازگار با اکسل)، مطابق فیلتر جاری، سقف ۵۰۰۰ ردیف، نام
ppm-projects-YYYY-MM-DD.csv. ستونها:id،title،status،owner_user_id،date_start،date_end،progress،category،tags،archived. نیازمند مدیریت پروژه. - اسلاگ یکتا از عنوان (
sanitize_titleو پسوند-2،-3، …). - ذخیره بهصورت پیشنویس در دفترچهٔ پروژهٔ جدید؛ عنوان خالی میشود «پیشنویس بدون عنوان» و وضعیت
draft. - تاریخ خالی شروع/پایان پروژه از اولین شروع و آخرین پایان فازها پر میشود.
- حذف پروژه، وظایف همان پروژه را هم حذف میکند.
- بایگانی دفترچه: پروژههای آرشیو با جستجوی عنوان، ۱۲ در هر صفحه، لینک به نمای جدولی فیلترشده.
- منابع دفترچه: کاربران وردپرس دارای
ppm_view_projectsیاppm_manage_projects(آواتار، نقش، ایمیل، نشان مدیر پروژه). - ردیف تیم: افزودن/حذف عضو؛ نقش حداکثر ۸۰ نویسه؛ شناسهٔ تکراری نادیده گرفته میشود. پیوست از رسانه (چندتایی)؛ لوگو فقط تصویر. رنگ سهرقمی به ششرقمی گسترش مییابد.
وظایف
- لیست وظایف در سطح پروژه از مسیر ادمین.
- مدل وظیفه: عنوان، وضعیت باز/بسته، کلید ستون کانبان، تاریخ سررسید اختیاری (
Y-m-d). - فیلتر بر اساس پروژه در جایی که رابط پشتیبانی میکند.
- صفحهٔ مخفی
persian-project-management-tasks(در زیرمنوی اصلی نیست؛ از داشبورد، ردیف پروژه، کانبان و تقویم باز میشود). - افزودن سریع وقتی فیلتر پروژه فعال است (عنوان + سررسید اختیاری)؛ نیازمند
ppm_manage_tasks. - بستن و حذف با nonce بهازای هر وظیفه؛ صفحهبندی ۲۰ ردیف.
- ستون پیشفرض وظیفهٔ جدید، اولین ستون بورد است (معمولاً
waiting).
کانبان تیمی
- یک بورد برای وظایف چندپروژهای برای کاربرانی که پروژه را میبینند.
- ستونهای قابل پیکربندی (حداکثر ۱۲): کلید، عنوان و نمایش دکمهٔ افزودن سریع بهازای هر ستون؛ پیشفرض شبیه «انتظار / در حال انجام / بازبینی» است.
- کشیدن و رها کردن کارت بین ستونها با AJAX (
ppm_kanban_move_card). - مودال ویرایش کارت: بهروزرسانی عنوان، تاریخ سررسید و غیره (
ppm_kanban_save_cardبا nonce بهازای هر وظیفه). - حذف وظیفه از بورد با AJAX (
ppm_kanban_delete_card). - پسزمینهٔ سفارشی کانبان (رنگ + تصویر) همانطور که در تنظیمات تعریف شده.
- فقط وظایف باز پروژههای غیرآرشیو. کارت: برچسب پروژه، نوار پیشرفت پروژه، سررسید (یا تاریخ بهروزرسانی)، لینک به لیست وظایف همان پروژه.
- مدیریت ستونها روی خود بورد (با
ppm_manage_tasks): تغییر عنوان، افزودن، حذف، نمایش افزودن سریع. عنوان حداکثر ۱۲۰ نویسه؛ حداقل یک ستون. حذف ستون، وظایف باز را به اولین ستون باقیمانده منتقل میکند. ذخیره درppm_kanban_column_layout. پیشفرض:waiting(لیست انتظار)،in_progress(در حال انجام)،review(بازبینی). - آمار هدر: تعداد وظایف باز و تعداد ستون.
- افزودن سریع: انتخاب پروژه، عنوان، سررسید اختیاری، ستون هدف. پروژهٔ آرشیو کارت نمیگیرد.
- مودال میتواند وظیفه را به پروژهٔ فعال دیگر منتقل کند.
- پشتیبان GET (بدون JS):
ppm_kanban_action=move|deleteبا nonce. - هر کس بورد را ببیند میتواند کارت را بکشد/ویرایش/حذف کند. ذخیرهٔ چیدمان ستون نیازمند مدیریت وظایف است.
- رنگ + تصویر = پوشش رنگی حدود ۳۸٪ روی تصویر. بازنشانی پسزمینه از تنظیمات یا فرم ظاهر کانبان.
تقویم کاری
- تقویم یکپارچه از روی بازهٔ تاریخ پروژهها و سررسید وظایف (میلادی
Y-m-dدر بکاند؛ رابط ممکن است شمسی نشان دهد). - فیلتر نوع رویداد (
all،projects،tasks) و در صورت نیازproject_id. - REST:
GET /wp-json/ppm/v1/calendar-eventsبرای کاربران احراز هویتشده با مجوز مناسب. - AJAX ادمین برای بارگذاری رویدادها در صفحهٔ تقویم بدون بارگذاری کامل صفحه.
- نمای شمسی / میلادی؛ ترجیح در
localStorage(ppm_cal_jalali). هفتهٔ ایرانی: شنبه اول تا جمعه. - نوار ابزار: ماه قبل / امروز / ماه بعد، فیلتر نوع، فیلتر پروژه، تغییر تقویم. جزئیات روز در ستون کناری؛ «بیشتر» برای روزهای شلوغ.
- راهنما: پروژه در حال اجرا، برنامهریزی/سایر، پروژهٔ عقبافتاده، وظیفه، وظیفهٔ عقبافتاده (رنگهای وضعیت completed / on_hold / draft هم اعمال میشود).
- رویداد پروژه: فقط غیرآرشیو با تاریخ شروع و/یا پایان؛ بازهٔ یکطرفه یک روزه میشود. عقبافتاده = پایان قبل از امروز و وضعیت غیر از
completedوdraft. - رویداد وظیفه: وظایف باز با
due_dateروی پروژهٔ غیرآرشیو. لینک به ویرایش پروژه، وظایف، کانبان. - بازهٔ نامعتبر (
from/to) در REST و AJAX کد ۴۰۰ برمیگرداند.
تنظیمات
سه تب (ذخیره در جاهایی که اعمال شده نیازمند قابلیت مدیریت پروژه است):
- نوار کناری — نمایش نوار بهازای هر صفحه، لوگو، نام سازمان، شعار.
- کانبان — رنگ و تصویر پسزمینهٔ بورد.
- صفحات — رنگ پسزمینهٔ محتوا بهازای هر اسلاگ مجاز.
- کلید تب در آدرس:
ppm_tab=sidebar|kanban|screens(پیشفرض نوار کناری). - بازنشانی پسزمینهٔ کانبان و پاک کردن همهٔ رنگ صفحات بدون خراب کردن تب دیگر.
- فهرست رنگ صفحات: داشبورد، پروژهها، وظایف، تیم، کانبان، تقویم، گزارشها، تنظیمات، پروژه جدید، ویرایش پروژه.
- کلیدهای نمایش نوار (پیشفرض همه روشن): dashboard، projects، tasks، team، team_kanban، work_calendar، reports، settings، project_new، project_edit.
امنیت و نقشها
- قابلیتهای سفارشی:
ppm_manage_projects،ppm_view_projects،ppm_manage_tasks(به مدیرکل در فعالسازی / ارتقا داده میشود). - Nonce روی AJAX و فرمهای تنظیمات؛ بررسی capability روی صفحات و callbackهای API.
- به نقش ویرایشگر (و نقشهای دیگر) بهصورت خودکار قابلیت داده نمیشود؛ با افزونهٔ نقش یا کد سفارشی اختصاص دهید.
- مشاهده با
ppm_view_projectsیا مدیریت پروژه. مدیریت وظایف لیست باppm_manage_tasksیا مدیریت پروژه. - شناسهٔ پیوست باید پست
attachmentواقعی باشد. شناسهٔ کاربر تیم/مالک باید وجود داشته باشد. - HTML آیکون زیرمنو از
wp_ksesمیگذرد. ریدایرکت باwp_safe_redirect. CSV و تنظیمات ازadmin-post.phpبا nonce. - REST تقویم فقط کاربر واردشده با مجوز مشاهده. AJAX فقط
wp_ajax_*(بدونnopriv).
لایهٔ داده
- جداول:
{prefix}ppm_projects،{prefix}ppm_tasks(ایجاد/بهروز باdbDelta). - گزینهٔ نسخهٔ داخلی
ppm_db_version؛ اجرایmaybe_upgradeرویplugins_loadedبرای همتراز کردن اسکیما. - پرچم اسکیمای فعلی:
1.3.0.meta_jsonباJSON_UNESCAPED_UNICODE. - ایندکس پروژهها:
slugیکتا؛status_archived؛owner_user_id؛date_end. - ایندکس وظایف:
project_id؛project_status؛kanban_status؛due_date. - خواندن
due_dateاگر ستون هنوز وجود نداشته باشد (قبل از ارتقا) خطا نمیدهد.
لیست پروژه و گردش کار
- گزینهٔ صفحهٔ ادمین: تعداد ردیف در هر صفحه با
ppm_projects_per_page(پیشفرض ۲۰). - اقدام دستهجمعی: آرشیو گروهی پروژههای انتخابشده (نیازمند
ppm_manage_projects) با nonce مربوط بهbulk-projects. - اعلان موفقیت برای حذف / آرشیو / آرشیو گروهی.
- ستون چکباکس برای کاربر بدون مجوز مدیریت مخفی است.
توسعهدهنده: فیلتر و AJAX
| نوع | نام / آدرس | توضیح کوتاه |
|---|---|---|
| فیلتر | ppm_projects_total_budget_display |
خروجی متن یا HTML برای کارت بودجه/هزینه در داشبورد و لیست پروژهها؛ رشتهٔ خالی یعنی بدون محتوای سفارشی. |
| REST | GET /wp-json/ppm/v1/calendar-events |
پارامترها: from، to (اجباری)، اختیاری project_id، types. نیازمند مجوز مشاهدهٔ پروژه. |
| AJAX | ppm_calendar_events |
همان دادهٔ تقویم در صورت محدودیت REST یا permalink ساده. |
| AJAX | ppm_kanban_move_card، ppm_kanban_save_card، ppm_kanban_delete_card |
جابهجایی کارت، ذخیره از مودال، حذف؛ با nonce و بررسی capability در کلاس کانبان. |
admin_post |
ppm_export_projects |
دانلود CSV. |
admin_post |
ppm_save_project |
ایجاد/بهروزرسانی پروژه. |
admin_post |
ppm_save_task |
افزودن سریع وظیفه در صفحهٔ وظایف. |
admin_post |
ppm_save_plugin_settings |
ظاهر کانبان + رنگ صفحات. |
admin_post |
ppm_save_kanban_appearance |
پسزمینه از خود صفحهٔ کانبان. |
admin_post |
ppm_save_kanban_quick_task |
افزودن سریع کارت. |
admin_post |
ppm_kanban_update_task |
ذخیرهٔ کارت بدون AJAX. |
admin_post |
ppm_save_kanban_columns |
چیدمان ستونها. |
admin_post |
ppm_save_sidebar_settings |
نمایش نوار و برندینگ. |
هنوز پیادهسازی نشده (جاینگهدار)
- منوی تیم: صفحهٔ جاینگهدار.
- منوی گزارشها: صفحهٔ جاینگهدار.
جستجوی نوار دفترچهٔ معماری، دکمهٔ تنظیمات/اعلان، و dropzone فایل در ویزارد پروژهٔ جدید در حال حاضر نمایشی هستند؛ پیوست واقعی از کتابخانهٔ رسانه وردپرس ذخیره میشود.
Stored options (wp_options)
| Option | Purpose |
|---|---|
ppm_db_version |
Schema version (currently 1.3.0) |
ppm_kanban_column_layout |
Kanban column definitions |
ppm_kanban_appearance |
Backdrop color + image attachment ID |
ppm_sidebar_screens |
Per-screen sidebar visibility map |
ppm_sidebar_logo_attachment_id |
Custom logo |
ppm_plugin_company_name |
Organization name in the brand banner |
ppm_plugin_company_tagline |
Tagline |
ppm_screen_backgrounds |
Hex colors per admin slug |
User meta: ppm_projects_per_page. Browser-only: localStorage keys ppm_projects_view and ppm_cal_jalali.
گزینههای ذخیرهشده
همان جدول بالا در wp_options؛ متای کاربر ppm_projects_per_page؛ ترجیح نمای لیست/تقویم فقط در مرورگر.
Bundled library versions (loaded on matching screens only)
| Library | Version | Used on |
|---|---|---|
| Vazirmatn | 33.003 | All plugin admin screens |
| Chart.js | 4.4.1 | Dashboard charts |
| persian-date | 1.1.0 | Project datepicker + work calendar |
| @majidh1/jalalidatepicker | 0.9.5 | New/edit project phase dates |
Internationalization
- Text domain:
persian-project-management. Header Domain Path:/languages(place.po/.mothere for extra locales). - Default UI copy in PHP is Persian. WordPress 4.6+ can load translations from wordpress.org when the plugin is listed there.
- Status labels (پیشنویس، برنامهریزی، در حال اجرا، متوقف، تمامشده) and Kanban defaults are translated strings.
ترجمه و بینالمللیسازی
دامنهٔ متن persian-project-management؛ مسیر /languages. متن پیشفرض رابط فارسی است.
Accessibility
dir="rtl"on plugin wrappers;screen-reader-texton filter labels; ARIA tabs on Settings;role="dialog"/aria-modalon the Kanban card modal;role="progressbar"on project/Kanban progress;wp.a11y.speakwhen copying an edit link.- Calendar weekday row and grid have accessible labels; loading state is announced.
دسترسپذیری
چیدمان RTL، برچسبهای صفحهخوان، تب ARIA در تنظیمات، مودال کانبان، نوار پیشرفت، اعلام کپی لینک، و برچسبهای تقویم.
Privacy and data
- Admin-only. No public REST without login +
ppm_view_projects. Nowp_ajax_nopriv_*handlers. - Stores project/task rows in custom tables and the options listed above. File attachments are WordPress media IDs (files live in the Media Library).
- No analytics, telemetry, or third-party tracking. Fonts and scripts ship inside
assets/vendor/(no remote CDN). - Budget KPI is empty until a site integrator fills
ppm_projects_total_budget_display; the plugin does not store financial amounts of its own.
حریم خصوصی و داده
فقط پیشخوان؛ بدون REST عمومی و بدون AJAX مهمان. داده در جداول اختصاصی و گزینهها. پیوستها شناسهٔ رسانهٔ وردپرساند. ردیابی و تلهمتری وجود ندارد. کارت بودجه تا اتصال فیلتر خالی است.
Deactivation and uninstall
There is no uninstall.php. Deactivating the plugin does not drop {prefix}ppm_projects, {prefix}ppm_tasks, or PPM options. Remove those tables/options manually if you need a clean uninstall.
غیرفعالسازی و حذف
فایل uninstall.php وجود ندارد. غیرفعالسازی جداول و گزینهها را پاک نمیکند.
Frequently asked questions
Does this plugin show anything on the site frontend?
No. It only adds a مدیریت پروژه menu inside wp-admin.
Can Editors use it?
Not until you grant ppm_view_projects / ppm_manage_projects / ppm_manage_tasks. Activation assigns those caps to Administrator only.
Why is the budget card a dash?
The plugin has no built-in finance module. Return a string from ppm_projects_total_budget_display to show a total.
Are dates stored as Jalali?
No. Pickers and the calendar UI can show Jalali; the database and REST API use Gregorian Y-m-d.
Why are Team and Reports empty?
They are placeholder screens (“این بخش بهزودی در دسترس خواهد بود”) for future releases.
CSV looks wrong in Excel?
Export is UTF-8 with a BOM. Open via Excel’s import if your locale still misreads encoding.
Is there a Gutenberg block or shortcode?
No.
سوالات م
This README is longer than the copy stored here. Read the rest on GitHub →
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.