All work

Open-source product

Knock First

A WordPress plugin that protects an entire website with one shared password. It is intended for staging sites, private launches and client previews.

Context
Independent WordPress plugin
Date / status
2026
Work
Open-source product

The problem

The plugin needed to protect all public pages with one shared password while keeping setup simple in WordPress admin.

Scope and architecture

My responsibilities

  • Plugin concept and user flow
  • PHP implementation and security review
  • Admin settings and accessible gate screen
  • Documentation, artwork and WordPress.org release

System

  • WordPress hooks and Settings API
  • WordPress password hashing API
  • Signed HTTP-only access cookie
  • Self-contained PHP and CSS with no remote requests

Key decisions

  1. 01

    Keep the product deliberately narrow.

    The plugin protects the public site with one shared password and leaves the WordPress login and administrator access available. It is a preview gate, not a replacement for user authentication.

  2. 02

    Never store the password itself.

    The saved setting contains a one-way WordPress password hash. Changing that password also invalidates every existing access cookie immediately.

  3. 03

    Ship without external dependencies.

    The gate makes no remote requests and stores no visitor records. That keeps installation small, reviewable and compatible with ordinary WordPress hosting.

What I built

I built the plugin, its settings and authentication flow, prepared the WordPress.org assets and documentation, and completed the official review process.

  • WordPress
  • PHP
  • Plugin development
  • Open source

Result

Approved for the official WordPress.org directory

  • One-password protection for an entire WordPress site
  • Simple WordPress admin settings
  • Reviewed and approved for WordPress.org distribution
View on WordPress.org

Contact

Have a project in mind?

Tell me what you’re building, where it stands and what you need help with. LinkedIn is the best place to reach me for now.

Start a conversation