{"id":341801,"date":"2026-07-24T19:59:48","date_gmt":"2026-07-24T19:59:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mf-staffcore-lite\/"},"modified":"2026-07-24T19:59:11","modified_gmt":"2026-07-24T19:59:11","slug":"mf-staffcore-lite","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mf-staffcore-lite\/","author":23531777,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.13","stable_tag":"0.1.13","tested":"7.0.2","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"MF StaffCore Lite","header_author":"Mehdi Falahi","header_description":"HR management for small teams (Lite edition). Upgrade to Pro for more modules.","assets_banners_color":"143a68","last_updated":"2026-07-24 19:59:11","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/mehdifalahi.dev\/product\/mf-staffcore-wp","header_plugin_uri":"https:\/\/mehdifalahi.dev\/product\/mf-staffcore-wp","header_author_uri":"https:\/\/mehdifalahi.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.13":{"tag":"0.1.13","author":"mehdifalahi","date":"2026-07-24 19:59:11"}},"upgrade_notice":{"0.1.7":"<p>No employee cap, no locked features, Pro-only modules fully removed from the Lite package. Recommended update.<\/p>","0.1.6":"<p>Clears remaining Plugin Check ERROR findings from review scan.<\/p>","0.1.5":"<p>Plugin Check ERROR compliance for WordPress.org review.<\/p>","0.1.4":"<p>Plugin Check escaping and packaging fixes for WordPress.org review.<\/p>","0.1.3":"<p>Plugin Check compliance fixes for WordPress.org review.<\/p>","0.1.2":"<p>i18n and Plugin Check fixes. Recommended update before submitting to WordPress.org.<\/p>","0.1.1":"<p>First public Lite release. For Pro modules see https:\/\/mehdifalahi.dev\/product\/mf-staffcore-wp<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3621884,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621884,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3621884,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3621884,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.13"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3621884,"resolution":"1","location":"assets","locale":"","width":1620,"height":832},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3621884,"resolution":"2","location":"assets","locale":"","width":1600,"height":828},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3621884,"resolution":"3","location":"assets","locale":"","width":1604,"height":828},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3621884,"resolution":"4","location":"assets","locale":"","width":1600,"height":836},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3621884,"resolution":"5","location":"assets","locale":"","width":1604,"height":832}},"screenshots":{"1":"Dashboard overview","2":"Employees list with filters","3":"Attendance module","4":"Leave requests","5":"Payroll \/ payslips"}},"plugin_section":[],"plugin_tags":[5877,2465,8322,196898,27107],"plugin_category":[],"plugin_contributors":[273220],"plugin_business_model":[],"class_list":["post-341801","plugin","type-plugin","status-publish","hentry","plugin_tags-attendance","plugin_tags-employees","plugin_tags-hr","plugin_tags-leave","plugin_tags-payroll","plugin_contributors-mehdifalahi","plugin_committers-mehdifalahi"],"banners":{"banner":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/banner-772x250.png?rev=3621884","banner_2x":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/banner-1544x500.png?rev=3621884","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/icon-128x128.png?rev=3621884","icon_2x":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/icon-256x256.png?rev=3621884","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/screenshot-1.png?rev=3621884","caption":"Dashboard overview"},{"src":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/screenshot-2.png?rev=3621884","caption":"Employees list with filters"},{"src":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/screenshot-3.png?rev=3621884","caption":"Attendance module"},{"src":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/screenshot-4.png?rev=3621884","caption":"Leave requests"},{"src":"https:\/\/ps.w.org\/mf-staffcore-lite\/assets\/screenshot-5.png?rev=3621884","caption":"Payroll \/ payslips"}],"raw_content":"<!--section=description-->\n<p><strong>MF StaffCore Lite<\/strong> is a modular HR management plugin for WordPress. It gives small teams a clean admin panel (Tabler UI) for everyday HR work\u2014without locking you into wp-admin only.<\/p>\n\n<h4>What you get in Lite<\/h4>\n\n<ul>\n<li><strong>Employees<\/strong> \u2014 profiles, departments, positions (no limit on employee count)<\/li>\n<li><strong>Attendance<\/strong> \u2014 track time records<\/li>\n<li><strong>Leave requests<\/strong> \u2014 request and approve leave<\/li>\n<li><strong>Payroll<\/strong> \u2014 payslips and employee self-service payslips<\/li>\n<li><strong>Assets<\/strong> \u2014 assets, categories, maintenance, suppliers<\/li>\n<li><strong>Users &amp; permissions<\/strong> \u2014 Administrator, HR Manager, and Employee roles, including bulk-linking WordPress users<\/li>\n<li><strong>Notifications<\/strong> \u2014 in-app bell and inbox (no email required)<\/li>\n<li><strong>Frontend panel<\/strong> \u2014 open the same HR UI outside <code>\/wp-admin<\/code><\/li>\n<li>Responsive sidebar (desktop + mobile)<\/li>\n<\/ul>\n\n<h4>Employee self-service<\/h4>\n\n<p>Employees can use My Profile, My Leave, and My Payslips for their <strong>own<\/strong> records only.<\/p>\n\n<h4>Lite limits<\/h4>\n\n<p>Lite has no employee cap and no locked built-in features. The only difference from Pro is a set of additional modules that ship only in Pro: Documents, Awards, KPIs \/ performance reviews, Backup &amp; Restore, and Biometric device sync.<\/p>\n\n<p>Need those extra modules? See <a href=\"https:\/\/mehdifalahi.dev\/product\/mf-staffcore-wp\">MF StaffCore Pro<\/a> (<strong>$39 USD<\/strong>, one-time purchase, no license key).<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>StaffCore stores HR data in your WordPress database. Lite does <strong>not<\/strong> phone home for license checks. Optional outbound links (for example Upgrade to Pro) open the author product page when you choose them.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mf-staffcore<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install the ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>).<\/li>\n<li>Activate <strong>MF StaffCore Lite<\/strong> through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Open <strong>MF StaffCore<\/strong> from the WordPress admin menu (or use the frontend panel URL from <strong>Settings \u2192 Frontend Panel<\/strong>).<\/li>\n<li>Go to <strong>Settings \u2192 Users<\/strong> and link your WordPress account if prompted, then configure <strong>Company Information<\/strong> and <strong>Permissions<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20difference%20between%20lite%20and%20pro%3F\"><h3>What is the difference between Lite and Pro?<\/h3><\/dt>\n<dd><p>Lite is free with no employee cap and every core HR module fully functional, including bulk-linking WordPress users. Pro adds Documents, Awards &amp; recognition, KPIs &amp; performance reviews, Backup &amp; restore, and Biometric attendance sync. Details: <a href=\"https:\/\/mehdifalahi.dev\/product\/mf-staffcore-wp\">product page<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20install%20lite%20and%20pro%20on%20the%20same%20site%3F\"><h3>Can I install Lite and Pro on the same site?<\/h3><\/dt>\n<dd><p>No. Both use the plugin folder slug <code>mf-staffcore<\/code>. Activate <strong>only one<\/strong> edition per site.<\/p><\/dd>\n<dt id=\"does%20pro%20require%20a%20license%20key%3F\"><h3>Does Pro require a license key?<\/h3><\/dt>\n<dd><p>No. Pro is a separate download after purchase. Updates come from your purchase channel, not from WordPress.org.<\/p><\/dd>\n<dt id=\"where%20do%20employees%20open%20the%20hr%20panel%3F\"><h3>Where do employees open the HR panel?<\/h3><\/dt>\n<dd><p>Administrators can share the <strong>Frontend panel<\/strong> URL (Settings \u2192 Frontend Panel). Logged-in users with an active StaffCore account see the same menus their role allows.<\/p><\/dd>\n<dt id=\"is%20my%20data%20sent%20to%20the%20plugin%20author%3F\"><h3>Is my data sent to the plugin author?<\/h3><\/dt>\n<dd><p>No automatic telemetry or license \u201cphone home\u201d on Lite. HR data stays on your site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.13<\/h4>\n\n<ul>\n<li>Every wp_ajax handler calls check_ajax_referer() inline before reading POST (Plugin Check \/ review visibility)<\/li>\n<li>Document bookmarkable frontend GET entry flag (no mutation nonce)<\/li>\n<li>Pro activation merges default permissions for newly available Pro modules after Lite<\/li>\n<\/ul>\n\n<h4>0.1.12<\/h4>\n\n<ul>\n<li>Pro install ZIP is WordPress Upload\u2013compatible (single mf-staffcore\/ root); marketplace docs ship as a separate *-marketplace.zip<\/li>\n<\/ul>\n\n<h4>0.1.11<\/h4>\n\n<ul>\n<li>Remove Pro unlock filter (Guideline 5); Lite plan context never unlocks Pro<\/li>\n<li>Upgrade dompdf to 3.1.6<\/li>\n<li>Theme init via wp_register_script \/ wp_add_inline_script (no raw script echo)<\/li>\n<li>AJAX save: verify nonce before reading POST; tighten permissions JSON whitelist<\/li>\n<li>Sanitize list-filter GET inputs with absint \/ wp_unslash<\/li>\n<\/ul>\n\n<h4>0.1.10<\/h4>\n\n<ul>\n<li>Fix WordPress ZIP install failure (Could not copy file. mf-staffcore\\core&#041; by packaging with forward-slash paths<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Fix Lite activation fatal: do not call removed Pro-only Biometric cron when module is absent from ZIP<\/li>\n<li>Lite PlanRegistry treats Pro module IDs as not shipped (not runtime-locked trialware)<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Guideline 5: Lite build strips Pro wiring (PlanRegistry stub, menus, Ajax, ServiceContainer) so no locked built-in features remain in the package<\/li>\n<li>Text domain aligned with WordPress.org slug: mf-staffcore-lite<\/li>\n<li>Sanitize employee allowances JSON and bulk-delete \/ bulk-link ID payloads<\/li>\n<li>Removed Cropper.js; My Profile photo crop uses built-in canvas UI<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Removed employee cap and bulk-link restriction from Lite (no locked built-in features)<\/li>\n<li>Pro-only modules (Documents, Awards, KPIs\/Performance, Backup, Biometric) physically excluded from the Lite package, not just hidden<\/li>\n<li>Enqueue static CSS\/JS instead of inline tags; sanitize ADMS\/AJAX inputs; composer.json included in package<\/li>\n<li>Tested up to 7.0<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Plugin Check: remaining EscapeOutput (leave\/payslip day counts) and PreparedSQL false positives<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Plugin Check ERROR fixes: escaped view output, local Tom Select\/printThis, SQL\/filesystem compliance, Tested up to 7.0<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Plugin Check: exception message escaping plugin-wide; dev files excluded from Lite ZIP<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Plugin Check: TablerIcon print helpers, exception escaping, i18n translators comments \/ placeholders<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>i18n compliance for WordPress Plugin Check (literal translation strings, translators comments)<\/li>\n<li>Soft Upgrade to Pro UX for Lite builds<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Initial Lite release for WordPress.org<\/li>\n<li>Employees, departments, positions<\/li>\n<li>Attendance, leave requests, payroll, my payslips<\/li>\n<li>Assets, categories, maintenance, suppliers<\/li>\n<li>Users, permissions, company information, frontend panel<\/li>\n<li>In-app notifications, Tabler admin UI, mobile nav<\/li>\n<li>Soft Upgrade to Pro prompts (sidebar, settings card)<\/li>\n<\/ul>","raw_excerpt":"Free HR management for WordPress teams: employees, attendance, leave, payroll, and assets \u2014 fully functional, no employee cap.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/341801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=341801"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mehdifalahi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=341801"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=341801"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=341801"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=341801"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=341801"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=341801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}