Description
Kitgenix Document Manager lets admins upload documents and share a stable link like:
/kitgenix-document-manager/{slug}/
When you replace the file, the link stays the same and serves the new version.
Key Features
- Stable links: replace the file without changing the URL
- Admin documents table with search, copy link, and “Open link” action
- Quick edit modal (popup) for editing documents without leaving the table
- Document Categories: create categories and assign documents for easier organization
- Visibility controls: Public or Private documents
- Private behavior: redirect to login or return 403
- Serving mode: Inline (browser) or Download (attachment)
- Optional version history per document, including restore/delete for older versions
- Bulk version cleanup: delete all old versions for a document (Versions tab + modal action)
- Select from Media Library: optionally pick an existing Media Library file instead of uploading
- Safer serving: correct Content-Type where possible, security headers, and conditional caching for public docs
Usage
- Go to Kitgenix Document Manager
- Add a document (name + optional slug) and upload the initial file
- Copy the stable URL from the table and share it
- To update a document later, use Edit (modal) and upload a replacement file
- If Keep version history is enabled for that document, older files will appear in the Versions panel (restore/delete)
Categories:
- Use the Categories tab to add/edit/delete categories
- Assign a category when adding/editing a document
Note: Inline viewing works best for PDFs and images. Office documents (DOCX/XLSX/etc.) typically download because browsers can’t render them natively.
Settings
Settings are available under the Settings tab:
- Allowed file extensions
- Default visibility (Public/Private)
- Serving mode:
- Inline (browser)
- Download (attachment)
- Versioning defaults (keep history by default, delete old versions when history is disabled)
- Private document behavior (login redirect or 403)
- Delete all plugin data on uninstall (optional)
Frontend card options are available under the Frontend tab:
- Default document card button label
- Button style (Outline or Solid)
- Preview image size
- File type/file size alignment
- Button alignment
- Button colors (normal + hover)
- Option to open the “View” button in a new tab
- Toggle showing file type and file size
- Toggle showing document description
- Shortcode Builder (generate a shortcode for one or multiple documents)
Security & Caching
- Private documents are not cached (no-store) and require login (or return 403)
- Public documents use conditional caching (ETag/Last-Modified) so browsers/CDNs can revalidate efficiently (including 304 Not Modified responses)
- Responses include security hardening headers like
X-Content-Type-Options: nosniff - Private documents include
X-Robots-Tag: noindex, nofollow
External Services
This plugin includes a shared “Kitgenix hub” component in wp-admin which may fetch publicly available plugin metadata from WordPress.org using the WordPress core plugins_api() function (WordPress.org Plugins API).
- When it runs: only in wp-admin (Kitgenix plugin admin pages)
- Data sent: plugin slug(s) (no personal data)
- Data received: publicly available plugin information (e.g. active installs, ratings)
- Caching: responses are cached locally using transients for ~1 day:
kitgenix_hub_wporg_active_installs_v1kitgenix_hub_wporg_ratings_v1
Developer Notes (Internal Reference)
This section documents internal identifiers used by the plugin (useful for developers, debugging, and advanced users).
Options (Settings)
- Option name:
kitgenix_document_manager_settings(constant:KITGENIX_DOCUMENT_MANAGER_OPTION_NAME) - Settings group:
kitgenix_document_manager_settings_group - Keys (defaults):
allowed_extensions:["pdf","doc","docx","xls","xlsx","ppt","pptx","txt"](stored as an array; comma-separated strings are accepted and normalized)default_visibility:public(public|private)serving_mode:attachment(attachment|inline)keep_version_history:truedelete_old_versions:falseprivate_behavior:login(login|403)delete_data_on_uninstall:falsecard_button_label:"View"card_button_style:"outline"(outline|solid)card_open_new_tab:falsecard_show_file_type:truecard_show_file_size:truecard_show_description:falsecard_image_size:96(px)card_meta_alignment:"justify"(justify|left|center|right)card_button_alignment:"center"(justify|left|center|right)card_button_text_color:""(hex or blank)card_button_bg_color:""(hex or blank)card_button_border_color:""(hex or blank)card_button_hover_text_color:""(hex or blank)card_button_hover_bg_color:""(hex or blank)card_button_hover_border_color:""(hex or blank)
Data Model
- Custom Post Type:
kitgenix_dm_doc - Taxonomy (categories):
kitgenix_dm_cat - Capability:
manage_kitgenix_document_manager_documents(assigned to Administrators and Shop Managers on activation)
Post Meta
_kitgenix_document_manager_current_attachment_id(current attachment ID)_kitgenix_document_manager_description(optional document description shown on cards)_kitgenix_document_manager_visibility(public|private)_kitgenix_document_manager_versioning_enabled(0|1)_kitgenix_document_manager_versions(array of attachment IDs)
Stable Link Endpoint
- Base path:
/kitgenix-document-manager/{slug}/ - Query var:
kitgenix_document_manager_slug
REST API
GET /wp-json/kitgenix-document-manager/v1/doc/{slug}- Returns:
slug,title,updated(ISO 8601),visibility,stable_url - Private documents return 403 when logged out
- Returns:
Shortcode
-
[kitgenix_document_manager_link slug="my-doc" label="Download"]- If
labelis omitted, the document title is used. - Private documents render nothing for logged-out users.
- If
-
[kitgenix_document_manager_document slug="my-doc" button_label="View"]- Renders a small preview (thumbnail/icon), the document title, file type, file size, and a “View” button.
- Private documents render nothing for logged-out users.
- Optional attributes:
button_style="outline"|"solid",image_size="96",meta_align="justify"|"left"|"center"|"right",button_align="justify"|"left"|"center"|"right",show_description="0"|"1",new_tab="0"|"1",show_type="0"|"1",show_size="0"|"1". - To render multiple documents inline, use
slugsinstead ofslug, e.g.[kitgenix_document_manager_document slugs="doc-a,doc-b,doc-c"].
Admin Actions (admin-post.php)
The Document Manager screen uses admin-post actions, including:
kitgenix_document_manager_document_save- Nonce field:
kitgenix_document_manager_document_nonce - Nonce action:
kitgenix_document_manager_document_save
- Nonce field:
kitgenix_document_manager_document_delete(nonce query parameternonce)kitgenix_document_manager_version_restore(nonce query parameternonce)kitgenix_document_manager_version_delete(nonce query parameternonce)kitgenix_document_manager_versions_delete_all(nonce query parameternonce)kitgenix_document_manager_category_save- Nonce field:
kitgenix_document_manager_category_nonce - Nonce action:
kitgenix_document_manager_category_save
- Nonce field:
kitgenix_document_manager_category_delete(nonce query parameternonce)
WordPress action hook names for the above screen actions:
admin_post_kitgenix_document_manager_document_saveadmin_post_kitgenix_document_manager_document_deleteadmin_post_kitgenix_document_manager_version_restoreadmin_post_kitgenix_document_manager_version_deleteadmin_post_kitgenix_document_manager_versions_delete_alladmin_post_kitgenix_document_manager_category_saveadmin_post_kitgenix_document_manager_category_delete
The (hidden) CPT edit screen metabox uses:
kitgenix_document_manager_upload_initial(nonce fieldkitgenix_document_manager_file_nonce)kitgenix_document_manager_replace_file(nonce fieldkitgenix_document_manager_file_nonce)- Visibility/versioning meta save nonce:
- Nonce field:
kitgenix_document_manager_meta_nonce - Nonce action:
kitgenix_document_manager_save_meta
- Nonce field:
Hooks, Filters & Assets (Internal)
This list is intended as a comprehensive map of WordPress integration points used by the plugin.
plugins_loaded(bootstrap init)init(register CPT/taxonomy; add rewrite rules)- Filter:
query_vars(adds query varkitgenix_document_manager_slug) template_redirect(serves stable link responses)rest_api_init(registers REST route)admin_menu(registers Kitgenix menu + Document Manager submenu)admin_head(outputs Kitgenix admin menu icon CSS)admin_init(registers Settings API option)admin_enqueue_scripts(enqueues Kitgenix hub CSS; enqueues Document Manager admin assets)add_meta_boxes(adds the CPT file/visibility metaboxes)save_post(saves visibility + versioning meta)admin_post_kitgenix_document_manager_upload_initial(metabox upload)admin_post_kitgenix_document_manager_replace_file(metabox replace)admin_notices(metabox success/error notices viakitgenix_dm_notice)- Filter:
manage_kitgenix_dm_doc_posts_columns(adds list table columns) manage_kitgenix_dm_doc_posts_custom_column(renders list table columns)- Filter:
post_row_actions(adds “Replace File” row action) - Filter:
site_status_tests(registers Site Health test) - Shortcode:
kitgenix_document_manager_link
Other admin UI identifiers:
– Admin list-table column key: kitgenix_dm_actions
– Version restore notice query arg: kitgenix_version_restored=1
Admin asset handles (wp-admin):
- Styles:
kitgenix-hub(Kitgenix hub page)kitgenix-admin-ui(shared Kitgenix admin UI)kitgenix-document-manager-admin(Document Manager settings screen)
- Scripts:
kitgenix-admin-tabs(shared Kitgenix tabs UI)kitgenix-document-manager-admin(Document Manager admin JS)
Site Health (Internal)
- Registers Site Health test ID:
kitgenix_document_manager_uploads(checks uploads directory exists and is writable)
Notes (Internal)
- Uninstall deletes a legacy transient
kitgenix_document_manager_site_healthfor backwards compatibility, even though v1 does not set it.
Installation
- Upload the plugin folder to /wp-content/plugins/
- Activate the plugin through the ‘Plugins’ menu.
- Go to Kitgenix -> Document Manager.
FAQ
-
Where are files stored?
-
When you upload a document inside Document Manager, files are stored in:
wp-content/uploads/kitgenix-document-manager/
If you select an existing file from the Media Library, the plugin uses that attachment’s existing location inside your normal WordPress uploads directory.
-
Why does my file download even in “Inline (browser)” mode?
-
Browsers can only display some file types inline (PDFs, images, and many text types). For formats that the browser can’t render (e.g. DOCX/XLSX), the file will download.
-
My stable link returns 404. What should I do?
-
Go to Settings Permalinks and click Save Changes to flush rewrite rules.
-
Can I restore an older file?
-
Yes. Enable Keep version history for that document, then use Edit to open the modal and restore/delete older versions from the Versions panel.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Kitgenix Document Manager” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Kitgenix Document Manager” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0 (18 March 2026)
- Initial release.
- Added a document card shortcode for embedding a document preview with file type/size and a “View” button (includes button label/new tab/field toggles and outline/solid button style).
- Added a stable link endpoint: /kitgenix-document-manager/{slug}/ (file can be replaced without changing the URL).
- Added a Document Manager admin area under the Kitgenix menu with tabs for Documents, Categories, Versions, Settings and Support.
- Added an admin documents table with search plus quick actions (copy link, open link, edit, replace file).
- Added a quick edit modal for editing documents without leaving the documents table.
- Added Document Categories (create/manage categories and assign them to documents).
- Added per-document visibility (Public/Private) plus private behavior options (redirect to login or return 403).
- Added file serving modes (inline vs download/attachment) with safer inline handling.
- Added optional per-document version history, including restore and delete for older versions.
- Added bulk version cleanup tools (delete all old versions for a document via the Versions tab and modal actions).
- Added Media Library selection support (choose an existing Media Library file instead of uploading).
- Added Settings for allowed file extensions plus sensible defaults for visibility, serving mode and versioning.
- Added safer file serving with traversal checks, security headers, and conditional caching for public documents (ETag/Last-Modified) while private documents are not cached (no-store).
- Added a Site Health test for the Kitgenix Document Manager uploads directory.
- Added uninstall behavior that removes plugin settings, with an option to delete all Document Manager data (documents and related attachments/versions).
- UI: Improved the Kitgenix admin header layout and social icon links (compact icon buttons) across settings and the Kitgenix hub.
- Fix: Admin notices now display above the Kitgenix header using the WordPress standard notice area.
- Fix: Added defensive notice normalization to prevent notices being relocated into the header by other scripts.
- UI: Admin tables inside Kitgenix pages now use Kitgenix styling for a more consistent branded look.
- Fix: Added spacing between adjacent action links/buttons (e.g., Edit/Delete).
- Security: Normalised metabox and admin-post request handling so POST values are read only after nonce verification, and upload arrays are sanitized before use.
- Fix: Stream documents with validated file paths and safe response headers instead of reading file contents into memory for output.
- Fix: Escaped shared Kitgenix hub card media output for WordPress coding standards compliance.
- Maintenance: Updated the plugin Author URI to the public Kitgenix WordPress.org profile and replaced the old custom admin-menu icon CSS with the native Dashicons icon.
