RIACO Content Protector

Protect any portion of your WordPress content using a simple shortcode. Includes global password, AJAX unlock, and site-wide instant access.

By robertoiacono

Version 1.0.0 Active Installs 0+ Updated 3 months ago 3 months old

Description

RIACO Content Protector allows you to protect any part of your WordPress content using a shortcode.
Unlike the built-in post password protection, this plugin protects only what you wrap, not the whole post.

Perfect for:

  • Protecting premium blocks of content
  • Protecting guides, downloads, links, or sensitive sections
  • Paywall-style snippets

Features

  • Protect only specific content inside posts/pages
  • Uses a minimal shortcode:
    [riaco_content_protector] Hidden text here [/riaco_content_protector]
  • Global password stored in plain text, like WordPress page passwords.
  • AJAX-based form — no page reload
  • Unlocks all protected sections on the site after correct password
  • Optional cookie persistence (remember unlocked content for a configurable number of days)
  • Secure implementation using nonces, hashed tokens, and transients

Important:

  • The global password is stored in plain text, just like WordPress page passwords. It can be read by user with ‘manage_options’ ability.
  • If the global password or “Remember Unlocked” duration is changed in settings, all existing unlock cookies are invalidated. Users will need to re-enter the new password to access protected content.

How It Works

Wrap content you want to protect:

[riaco_content_protector]
This text will be hidden until the visitor enters the password.
[/riaco_content_protector]

Set the global password under:

Settings > Content Protector

Visitors will see a modern, styled form.
After entering the correct password:

  • The content unlocks immediately
  • All other protected areas unlock automatically
  • An optional cookie can keep everything unlocked for a chosen number of days

Security

  • Nonces on every request
  • Secure HMAC token for cookie authentication
  • Sanitized shortcode attributes
  • Escaped output
  • No sensitive data stored in cookies
  • Global password stored in plain text, like WordPress page passwords.

Cookie

We use this cookie to understand if user unlocked the content: riaco_cp_unlocked_global.

Style

You can style the content protector box.

It has this class: .riaco-cp--container, so you can add in your style.css:

.riaco-cp--container {
    background: #f8f9fa;
    padding: 20px;
    border: 1px solid #ddd;
    border-radius: 6px;
}

You can replace button classes using:

add_filter( 'riaco_cp_button_classes', function( $classes ) {
    return 'button my-custom-button-class';
});

Or you can remove button classes:

add_filter( 'riaco_cp_button_classes', function( $classes ) {
    // Remove wp-element-button
    return str_replace( 'wp-element-button', '', $classes );
});

License

This plugin is licensed under GPLv2 or later.

Plugin comparisons

See how this plugin stacks up against alternatives side by side.