WP Manifestindependent plugin directory
manifest / forms / jpkcom-cf7-upload-path

JPKCom CF7 Upload Path WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA

WordPress plugin that changes the default CF7 upload path string to a save value.

★ 0stars
27release downloads
v1.0.11latest · 2d ago

Install

Download jpkcom-cf7-upload-path.zip From the v1.0.11 release on GitHub, Oct 21, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/jpkcom/jpkcom-cf7-upload-path/releases/download/v1.0.11/jpkcom-cf7-upload-path.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

Plugin Name: JPKCom CF7 Upload Path
Plugin URI: https://github.com/JPKCom/jpkcom-cf7-upload-path
Description: Changes the default CF7 upload path string to a save value.
Version: 1.0.8
Author: Jean Pierre Kolb jpk@jpkc.com
Author URI: https://www.jpkc.com
Contributors: JPKCom
Tags: Security, Upload, CF7
Requires Plugins: contact-form-7
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 8.3
Network: true
Stable tag: 1.0.8
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Changes the default CF7 upload path string to a save value.

Description

Changes the default CF7 upload path string to a save value.

<?php
define( 'WPCF7_UPLOADS_TMP_DIR', 'your-custom-tmp-dir' );

For more details visit: https://contactform7.com/file-uploading-and-attachment/

Documentation

API Documentation: Complete PHPDoc-generated API documentation is available at: https://jpkcom.github.io/jpkcom-cf7-upload-path/docs/

Installation

  1. In your admin panel, go to 'Plugins' > and click the 'Add New' button.
  2. Click Upload Plugin and 'Choose File', then select the Plugin's .zip file. Click 'Install Now'.
  3. Make sure 'Contact Form 7' plugin is activated.
  4. Click 'Activate' to use the plugin right away.

Changelog

1.0.8

  • Changed: the update manifest generator now defaults a missing Network: header to false instead of true, matching WordPress' own default. No change for this plugin, which declares Network: true explicitly
  • CI: the lint and guard workflow now also runs on pushes to main. It only covered pull requests, so a direct push with bypass rights skipped every check
  • Changed: comments, workflow step names and CI output across the repository are now English throughout, and the developer notes in CLAUDE.md were translated and trimmed. No effect on the shipped plugin

1.0.7

  • Changed: Tested up to raised to WordPress 7.1
  • Changed: the bundled updater's runtime floor now matches the plugin's own minimum. It bailed out below WordPress 6.8 while the plugin header has required 6.9 for several releases, so the check could never fire on a supported installation
  • CI: the release manifest's fallback values for requires and tested now say 6.9 and 7.1. They only apply when the README metadata cannot be read, but a stale fallback would have published a minimum the plugin no longer supports

1.0.6

  • Added: plugin banners (assets/banner-1544x500.avif, assets/banner-772x250.avif) — a plain #3c4955 surface with no lettering. The update manifest already advertised these two URLs, but nothing was published under them, so the plugin card in wp-admin had a broken banner

1.0.5

  • CI: the release step no longer copies the staging directory into itself, so the ZIP has no empty jpkcom-cf7-upload-path/jpkcom-cf7-upload-path/ folder
  • CI: bumped the pinned GitHub Actions (checkout v7.0.1, setup-python v7.0.0, action-gh-release v3.0.2, fetch-metadata v3.1.0), still pinned to full commit SHAs
  • CI: the release ZIP now excludes the development-only tests/ and tools/ directories
  • CI: security and regression tests now run on every pull request, where a plugin has them

1.0.4

  • Security: update packages are now verified before installation — the verified file is handed to WordPress instead of being downloaded a second time, so the bytes that were checked are the bytes that get installed
  • Security: a missing or unfetchable SHA-256 checksum now aborts the update instead of installing unverified code (previously it silently skipped verification)
  • Security: pinned every GitHub Action to a full commit SHA and added Dependabot with a 7-day cooldown, so a moved tag can no longer change the release build
  • Security: tightened which download the updater claims, so sibling plugins cannot match each other's package
  • Fixed: sprintf() calls in the updater bound named arguments to a variadic parameter, which raises ArgumentCountError on PHP 8.3
  • Fixed: the "View Details" modal could fail with a TypeError when the manifest omitted requires_plugins
  • Performance: a failed manifest fetch is now cached for an hour instead of being retried on every admin request
  • Added: CI workflow on every pull request (PHP lint, named-argument check, YAML validation, action-pinning guard)
  • Security: the plugin now writes its own .htaccess, index.php and web.config into the CF7 upload directory and its .ht.private parent instead of relying on Contact Form 7 and server configuration; writes are containment-checked against WP_CONTENT_DIR and never overwrite existing files

1.0.3

  • Added secure self-hosted plugin updates via GitHub with SHA256 checksum verification
  • Added an automated release workflow (builds the ZIP, generates the manifest and deploys to gh-pages on tag push)
  • Raised the minimum WordPress version to 6.9 and "Tested up to" to WordPress 7.0
  • Switched license metadata to the SPDX identifier GPL-2.0-or-later with the HTTPS license URI
  • Added PHPDoc-generated API documentation, built and deployed to gh-pages on release
  • Hardening: enabled declare(strict_types=1), guarded the constant definition and removed the global-scope variable

1.0.2

  • Version update

1.0.1

  • Updated README.md

1.0.0

  • Initial Release

Releases

9 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.0.11 latest
Oct 21, 2026 2d ago
jpkcom-cf7-upload-path.zip +1 asset
6
jpkcom-cf7-upload-path.zip6
jpkcom-cf7-upload-path.zip.sha2560
Oct 21, 2026 2d ago
jpkcom-cf7-upload-path.zip +1 asset
4
jpkcom-cf7-upload-path.zip3
jpkcom-cf7-upload-path.zip.sha2561
Oct 19, 2026 4d ago
jpkcom-cf7-upload-path.zip +1 asset
4
jpkcom-cf7-upload-path.zip3
jpkcom-cf7-upload-path.zip.sha2561
Jul 30, 2026 2mo ago
jpkcom-cf7-upload-path.zip +1 asset
9
jpkcom-cf7-upload-path.zip8
jpkcom-cf7-upload-path.zip.sha2561
Jul 29, 2026 2mo ago
jpkcom-cf7-upload-path.zip +1 asset
3
jpkcom-cf7-upload-path.zip3
jpkcom-cf7-upload-path.zip.sha2560
Jul 28, 2026 2mo ago
jpkcom-cf7-upload-path.zip +1 asset
0
jpkcom-cf7-upload-path.zip0
jpkcom-cf7-upload-path.zip.sha2560
Jul 28, 2026 2mo ago
jpkcom-cf7-upload-path.zip +1 asset
0
jpkcom-cf7-upload-path.zip0
jpkcom-cf7-upload-path.zip.sha2560
Jul 27, 2026 2mo ago
jpkcom-cf7-upload-path.zip +1 asset
4
jpkcom-cf7-upload-path.zip4
jpkcom-cf7-upload-path.zip.sha2560
Jun 17, 2026 4mo ago
jpkcom-cf7-upload-path.zip +1 asset
0
jpkcom-cf7-upload-path.zip0
jpkcom-cf7-upload-path.zip.sha2560
A grade

Security

JPKCom CF7 Upload Path 1.0.8 · audited by WP Registry

No security issues found.

Audited release
1.0.8
Findings
none
Worst severity
—
Content hash
708e7f2a647a10706d5596f2…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.