{"id":365743,"date":"2026-09-12T09:49:42","date_gmt":"2026-09-12T09:49:42","guid":{"rendered":"https:\/\/bn.wordpress.org\/plugins\/zkteco-smart-attendance\/"},"modified":"2026-09-12T09:34:16","modified_gmt":"2026-09-12T09:34:16","slug":"hasibshah-attendance","status":"publish","type":"plugin","link":"https:\/\/it.wordpress.org\/plugins\/hasibshah-attendance\/","author":23539179,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"trunk","tested":"7.1","requires":"6.2","requires_php":"8.1","requires_plugins":null,"header_name":"Hasibshah Attendance","header_author":"Hasib Shah","header_description":"Integrates a ZKTeco K50-A biometric attendance device with WordPress over LAN and syncs attendance logs.","assets_banners_color":"","last_updated":"2026-09-12 09:34:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[5877,15783,264105,280348,280347],"plugin_category":[],"plugin_contributors":[280349],"plugin_business_model":[],"class_list":["post-365743","plugin","type-plugin","status-publish","hentry","plugin_tags-attendance","plugin_tags-biometric","plugin_tags-employee-attendance","plugin_tags-time-attendance","plugin_tags-zkteco","plugin_contributors-hasibshah","plugin_committers-hasibshah"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/hasibshah-attendance.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Integrates a ZKTeco K50-A biometric attendance device with WordPress over LAN and syncs attendance logs. This plugin provides a complete dashboard to monitor your employees' attendance directly from WordPress.<\/p>\n\n<p>Disclaimer: This plugin is an independent third-party tool developed by Hasib Shah and is not affiliated with, endorsed by, authorized, or sponsored by ZKTeco Inc. ZKTeco is a trademark of its respective owner.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Direct LAN connection to ZKTeco biometric devices.<\/li>\n<li>Sync attendance logs directly into WordPress.<\/li>\n<li>Automatic attendance summary calculation (present, absent, late).<\/li>\n<li>Support for shift times, holidays, and grace periods.<\/li>\n<li>Comprehensive employee management system.<\/li>\n<li>Built-in leave management (Sick leave, Paid leave, etc.).<\/li>\n<li>Export attendance reports to CSV.<\/li>\n<li>Raw device log viewer for debugging and tracking.<\/li>\n<li>Cron-based automatic background synchronization.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin uses Gravatar (an Automattic service) to provide fallback avatar images for employees in attendance reports and employee summaries when a local custom profile image has not been uploaded.<\/p>\n\n<ul>\n<li><strong>Service Name<\/strong>: Gravatar (by Automattic)<\/li>\n<li><strong>What it is used for<\/strong>: Displaying fallback avatar images in admin attendance reports and monthly report summaries when an employee does not have an uploaded profile photo.<\/li>\n<li><strong>What data is sent<\/strong>: Standard WordPress <code>get_avatar_url()<\/code> requests send an identifier or hashed string to Gravatar image servers (<code>secure.gravatar.com<\/code>) as part of the image URL query.<\/li>\n<li><strong>When it is contacted<\/strong>: The service is contacted by the administrator's browser when viewing attendance and monthly report pages if an employee record has no local custom profile image.<\/li>\n<li><strong>Why it is used<\/strong>: To provide visual identification for employee records across attendance reports without requiring manual image uploads for each employee.<\/li>\n<li><strong>Terms of Service<\/strong>: https:\/\/gravatar.com\/terms-of-service\/ (and Automattic Terms of Service: https:\/\/automattic.com\/tos\/)<\/li>\n<li><strong>Privacy Policy<\/strong>: https:\/\/automattic.com\/privacy\/<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<ol>\n<li>Go to 'ZKTeco Attendance' -&gt; 'Device Settings'.<\/li>\n<li>Enter the IP address and Port of your ZKTeco device (must be on the same network).<\/li>\n<li>Set your global office start time and grace time.<\/li>\n<li>Click \"Test Connection\" to ensure WordPress can communicate with the device.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/hasibshah-attendance<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Navigate to the 'ZKTeco Attendance' menu to configure the device connection.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20support%20all%20zkteco%20devices%3F\"><h3>Does it support all ZKTeco devices?<\/h3><\/dt>\n<dd><p>It has been specifically built for the ZKTeco K50-A, but it generally supports devices that use standard ZKTeco UDP\/TCP protocols via port 4370.<\/p><\/dd>\n<dt id=\"why%20is%20my%20attendance%20not%20syncing%3F\"><h3>Why is my attendance not syncing?<\/h3><\/dt>\n<dd><p>Make sure the WordPress server can ping the ZKTeco device over the local network and that the specified port is open.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Integrates a ZKTeco K50-A biometric attendance device with WordPress over LAN and syncs attendance logs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365743"}],"author":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hasibshah"}],"wp:attachment":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365743"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365743"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365743"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365743"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365743"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}