Link expired 📝 WordPress

WordPress: The link you followed has expired

Usually an upload (theme, plugin, media) larger than PHP’s upload/post limits — WordPress receives an empty request and shows this generic message.

Seen on: WordPress PHP

Meaning

When a request exceeds post_max_size, PHP discards the whole POST body, including WordPress’s nonce, so the nonce check fails with “link expired”. Genuine expired nonces (forms left open for over 24 hours) cause it too.

Common causes

  • Upload bigger than upload_max_filesize / post_max_size
  • Request taking longer than max_execution_time
  • Form left open longer than the nonce lifetime
  • Caching plugin serving stale nonces

⚡ Quick fix

  1. Raise upload_max_filesize and post_max_size (post ≥ upload)
  2. Upload large themes/plugins via FTP or WP-CLI instead
  3. Reload the page and resubmit
  4. Exclude admin/form pages from page caching

Detailed fix by platform

PHP

  1. .user.ini / php.ini (shared hosting: cPanel → MultiPHP INI Editor):
    ini
    upload_max_filesize = 128M
    post_max_size = 128M
    max_execution_time = 300
    memory_limit = 256M

WordPress

  1. wp plugin install ./plugin.zip --activate bypasses browser upload limits.

How to diagnose

  1. Size — How big is the upload?
  2. Limits — Media → Add New shows the max upload size
  3. Cache — Is the form page cached?

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.