Title: Labqi QR Manager
Author: Rinku Web Hopers
Published: <strong>August 5, 2026</strong>
Last modified: August 5, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/labqi-qr-manager.svg)

# Labqi QR Manager

 By [Rinku Web Hopers](https://profiles.wordpress.org/rinkurana11/)

[Download](https://downloads.wordpress.org/plugin/labqi-qr-manager.1.2.1.zip)

 * [Details](https://wordpress.org/plugins/labqi-qr-manager/#description)
 * [Reviews](https://wordpress.org/plugins/labqi-qr-manager/#reviews)
 *  [Installation](https://wordpress.org/plugins/labqi-qr-manager/#installation)
 * [Development](https://wordpress.org/plugins/labqi-qr-manager/#developers)

 [Support](https://wordpress.org/support/plugin/labqi-qr-manager/)

## Description

Labqi QR Manager is a complete QR code management solution for WordPress.

**Features:**

 * Generate QR codes (PNG, 500×500) using endroid/qr-code v6
 * Link-type QR codes — redirect to any URL on scan
 * Attachment-type QR codes — serve PDF, DOCX, XLSX, PNG, JPG, WEBP securely
 * Custom rewrite endpoint: `yoursite.com/qr/{code}`
 * Scan tracking — count + last-scan timestamp per QR
 * Bulk CSV import with per-row error reporting
 * Export to CSV, Excel (XLSX), or ZIP (images + manifest)
 * Bootstrap 5 admin UI with DataTables, SweetAlert2
 * Analytics dashboard widget
 * Settings: QR size, margin, logo overlay, default status

## Installation

 1. Upload the `labqi-qr-manager` folder to `/wp-content/plugins/`
 2. Activate the plugin in WordPress › Plugins
 3. Go to Settings › Permalinks and click Save (to flush rewrite rules)
 4. Visit Labqi QR Manager in the admin sidebar

## FAQ

### Where are QR images stored?

Inside `wp-content/uploads/labqi-qr-manager/qr-codes/`, so files survive plugin 
updates and reinstalls.

### Are attachment files publicly accessible?

No. A `.htaccess` blocks direct access. Files are served through PHP only.

### How do I change QR size or add a logo?

Go to Labqi QR Manager › Settings.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Labqi QR Manager” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Rinku Web Hopers ](https://profiles.wordpress.org/rinkurana11/)

[Translate “Labqi QR Manager” into your language.](https://translate.wordpress.org/projects/wp-plugins/labqi-qr-manager)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/labqi-qr-manager/),
check out the [SVN repository](https://plugins.svn.wordpress.org/labqi-qr-manager/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/labqi-qr-manager/)
by [RSS](https://plugins.trac.wordpress.org/log/labqi-qr-manager/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.1

 * Fixed nonce checks that WordPress.org’s Plugin Check scanner couldn’t verify:
   several AJAX handlers and the Add/Edit form handler called a custom security 
   wrapper method instead of WordPress core’s check_ajax_referer()/check_admin_referer()
   directly. The wrapper genuinely did call wp_verify_nonce() and current_user_can()
   correctly, but automated scanners can’t trace into custom methods — all handlers
   now call the core functions directly.
 * Moved the nonce check in the Add/Edit form handler earlier, before the submitted
   action type is read (previously it was only verified deeper inside the add/update
   logic)
 * Sanitized $_FILES data field-by-field at the point of use (name, type) instead
   of passing the raw array through, and explicitly sanitized the “default_status”
   setting instead of relying only on a whitelist check
 * Added sanitize_text_field()/sanitize_key() before re-displaying submitted form
   values on validation errors (previously only wp_unslash() + esc_attr(), which
   escapes safely for output but skips the sanitize step)

#### 1.2.0

 * Renamed the plugin again from “ProductQRScan Pro” to “Labqi QR Manager” (slug:
   labqi-qr-manager) — WordPress.org’s reviewer AI flagged “Product QR Scan” as 
   too purely descriptive of the plugin’s functionality to be a distinctive name,
   even with “Pro” appended
 * Fixed several leftover references to the previous plugin name that the automated
   rename missed the first time (a page heading, the admin sidebar menu label, and
   internal page-slug/query-var prefixes)
 * Fixed an admin-page asset loading bug introduced by the rename: WordPress’ submenu
   page hook suffix must exactly match the parent menu slug’s hyphens (e.g. “labqi-
   qr_page_labqi-qr-add”); an earlier pass had generated an underscore in that position,
   which silently prevented Bootstrap/DataTables/custom JS/CSS from loading on the
   Add, Import, and Settings pages

#### 1.1.2

 * Fixed: the “All QR Codes” page list showed “NaN” for total entries/pages. `wp_send_json_success()`
   nests the AJAX response inside a `data` envelope, but DataTables reads `recordsTotal`/`
   recordsFiltered` from the top level of the response — the frontend now hoists
   those fields correctly before DataTables reads them
 * Fixed: a leftover page heading still read “QR Code Master” instead of the current
   plugin name

#### 1.1.1

 * Completed the library update from 1.1.0: endroid/qr-code was still on 5.1.0 (
   unchanged) and DataTables had only received a patch bump — both are now updated
   to their current stable releases (endroid/qr-code 6.0.9, DataTables 3.0.0)
 * Fixed a stray FAQ answer that pointed to the wrong QR image storage path

#### 1.1.0

 * Renamed the plugin from “QR Master Pro” to “Labqi QR Manager” (slug: labqi-qr-
   manager) to resolve a trademark/naming conflict flagged during WordPress.org 
   review
 * Removed load_plugin_textdomain() call (unnecessary on WordPress.org since WP 
   4.6, translations are loaded automatically)
 * Fixed: uploaded PDF/attachment files now live in a plugin-slug-namespaced uploads
   folder (wp-content/uploads/labqi-qr-manager/qr-pdfs/) instead of a bare top-level
   uploads/qr-pdfs/ folder; existing files are migrated automatically
 * Fixed: the Logo setting no longer asks for a typed absolute server file path —
   it now uses the WordPress Media Library picker and stores a portable attachment
   ID
 * Fixed: moved an inline block on the QR error page into a properly enqueued stylesheet
 * Updated bundled libraries to current stable releases: Bootstrap 5.3.3  5.3.8,
   DataTables 1.13.8  3.0.0, endroid/qr-code 5.1.0  6.0.9 (PHP requirement stays
   at 8.2 — a newer 6.1.x line of endroid/qr-code requires PHP 8.4 and was intentionally
   not used)

#### 1.0.3

 * Massive package size reduction (26MB  ~3MB installed) to fit WordPress.org’s 
   10MB upload limit:
    - Removed an unused 16MB bundled font (only needed for a QR “label” feature 
      this plugin never uses)
    - Replaced the phpoffice/phpspreadsheet library with a small built-in XLSX writer(
      no functionality change — XLSX export still has the same styled header, frozen
      header row, and auto-sized columns)
 * No user-facing behavior changes in this release

#### 1.0.2

 * Fixed: removed bundled hidden file (.htaccess) and obsolete legacy uploads folder
   from the package
 * Fixed: missing direct-access protection in templates/error.php
 * Fixed: Domain Path header now points to an existing languages/ folder
 * Fixed: replaced move_uploaded_file() with a WP_Filesystem-based secure upload
   handler
 * Fixed: replaced parse_url() with wp_parse_url(), unlink() with wp_delete_file()
 * Improved: all database queries now use $wpdb->prepare() with %i identifier placeholders
   for table/column names
 * Improved: added missing translator comments for all strings with placeholders
 * Improved: internal redirects now use wp_safe_redirect(); external QR-destination
   redirects remain wp_redirect() by design (admin-configured destinations, not 
   public input)

#### 1.0.1

 * QR code images now stored under wp-content/uploads/ instead of inside the plugin
   folder (data now survives plugin updates/reinstalls; existing images are migrated
   automatically)
 * Uninstall now fully removes all generated QR images and attachments
 * Removed unused legacy code files
 * Minor readme and translation string fixes

#### 1.0.0

 * Initial release

## Meta

 *  Version **1.2.1**
 *  Last updated **11 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 8.2 or higher **
 * Tags
 * [bulk import](https://wordpress.org/plugins/tags/bulk-import/)[qr code](https://wordpress.org/plugins/tags/qr-code/)
   [qr generator](https://wordpress.org/plugins/tags/qr-generator/)[qr tracking](https://wordpress.org/plugins/tags/qr-tracking/)
 *  [Advanced View](https://wordpress.org/plugins/labqi-qr-manager/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/labqi-qr-manager/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/labqi-qr-manager/reviews/)

## Contributors

 *   [ Rinku Web Hopers ](https://profiles.wordpress.org/rinkurana11/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/labqi-qr-manager/)