RIACO Content Protector

설명

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.

스크린샷

  • Frontend password form
  • Protected content example
  • Settings page with global password option

설치

  1. Upload the plugin folder to /wp-content/plugins/
  2. Activate the plugin through Plugins > Installed Plugins
  3. Go to Settings > Content Protector and configure your global password
  4. Add the shortcode to any post or page

    [riaco_content_protector] This is hidden. [/riaco_content_protector]

FAQ

Can I protect multiple sections on the same page?

Yes. All instances use the same global password and unlock together.

Does this protect the entire post?

No — only the content wrapped in the shortcode.

Are passwords hashed in the database?

No, the global password is stored in plain text like WordPress page passwords for easy admin management.

Does this work with Gutenberg / block editor?

Yes. It works in both Classic and Block Editor.
You can insert the shortcode inside Paragraph block or using Shortcode block.

What happens when I change the global password?

All previously unlocked content cookies are invalidated. Users must re-enter the new password.

후기

이 플러그인에 대한 평가가 없습니다.

기여자 & 개발자

“RIACO Content Protector”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.

기여자

자국어로 “RIACO Content Protector”(을)를 번역하세요.

개발에 관심이 있으십니까?

코드 탐색하기는, SVN 저장소를 확인하시거나, 개발 기록RSS로 구독하세요.

변경이력

1.0.0

  • Initial release
  • Shortcode protection
  • Global password
  • AJAX unlock
  • Cookie remember feature
  • Automatic unlock of all instances