If you need to create a simple shortcode to hide part of post content while showing it to logged-in users, here you are:
add_shortcode('protect', function ($attrs, $content) { if (is_user_logged_in()) { return $content; } else { return '<p>Only for friends.</p>'; } });
You will use it surrounding your to-be-hidden post part with [protect]
and [/protect]
.
Super easy and super effective. Of course, you can install a membership plugin, if you prefer.
To change the shortcode tag, modify the word “protect” in the code above.
User roles
You can even add a condition based on the logged-in user role.
add_shortcode('protect', function ($attrs, $content) { if (is_user_logged_in() && current_user_can('editor')) { return $content; } else { return '<p>Only for friends.</p>'; } });
The code above is checking the editor role, but you can check capabilities and/or define specific capabilities using the role editor plugin.
Caches
Pay attention to caching plugins: be sure they’re not caching pages when a user is logged in, otherwise, the full content is cached and served to everyone!