(Notes for a Codex page on Password Protected Posts)
You can set the Content Visibility of your WordPress posts (and Pages) with the Visibility setting. By default, Visibility is "Public," making the content of a post with a Published status publicly visible.
The options, found in the Publish box of the Edit Post Screen, are: "Public," "Password protected," or "Private."
Checking "Private" makes your post visible only to your Users with the role of Administrator or Editor.
Checking "Password protected,"
reveals a form field for you to enter a password.
You can password-protect your WordPress post or Page by setting its Content Visibility. By default, all the content of posts and Pages with a Published status is publicly visible.
<img class="alignright" src="http://codex.wordpress.org/images/6/6f/password_visibility.jpg" alt="Post Edit- Publish and Visibility box" width="309" height="361" />Password-protecting a WordPress Post/Page hides its Content and Excerpt, but not its Custom Fields: those can still show. Below are ways to hide 'em, and functions for customizing the default WP Password-Protected messages.
Setting the Content Visibility of a post or Page to: "Password-protected." changes the:
"Protected: "
, to the output of <a title="post-template.php in tags/3.1.1/wp-includes – WordPress Trac" href="http://core.trac.wordpress.org/browser/tags/3.1.1/wp-includes/post-template.php#L91">get_the_title()
</a>.get_the_excerpt()
</a>: "There is no excerpt because this is a protected post."get_the_content()
</a>.So in places that Post/Page lists its Title & Excerpt (e.g., Index, Category, Search views), we see:
Protected: Post's or Page's Title There is no excerpt because this is a protected post.
And the password-protected single Post/Page itself looks like:
Protected: Post/Page TitleThis post is password protected. To view it please enter your password below: <label for="pwbox-2923">Password:</label> <input id="pwbox-2923" name="post_password" size="20" type="password" /> <input disabled="disabled" name="Submit" type="submit" value="Submit" />
(Custom Field content can still display .)
This one function: <a href="http://codex.wordpress.org/Function_Reference/post_password_required" title="Function Reference/post password required « WordPress Codex">post password required()
</a>, checks both "whether post requires password and correct password has been provided." So, in single.php
, just wrap a big-ass if
around all your get_post_meta()
s, and CFs shan't show:
[php]if ( ! post_password_required() ) {
// Code to fetch and print CFs
}[/php]
WP's logo may be: <img src="http://s.wordpress.org/style/images/codeispoetry.png" alt="Code is Poetry" width="133" height="9" />, but those hard-coded Password messages are anything but poetic. As always, though, WP <a title="Plugin API/Hooks « WordPress Codex" href="http://codex.wordpress.org/Plugin_API/Hooks">Hooks</a> us up with the <a title="Plugin API/Filter Reference « WordPress Codex" href="http://codex.wordpress.org/Plugin_API/Filter_Reference">filters</a> to customize that text.
Someone in the support forums asked: <a title="WordPress › Support » How do I change Password Protected text?" href="http://wordpress.org/support/topic/how-do-i-change-password-protected-text#post-1255215">How do I change Password Protected text?</a>
Plugin developer <a href="http://wordpress.mfields.org/" title="Michael Fields">Michael Fields</a> answered:
"This piece of code should do it for you. Place this code in your theme's functions.php file. You can add customizations to the custom_password_form()
function - just don't use print or echo - the function must return a value."
[php htmlscript="true" highlight="7"]<?php add_filter( 'the_password_form', 'custom_password_form' ); function custom_password_form() { global $post; $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID ); $o = '<form class="protected-post-form" action="' . get_option('siteurl') . '/wp-pass.php" method="post"> ' . __( "This post is password protected. To view it please enter your password below:" ) . ' <label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" /> </form> '; return $o; } ?>[/php]
This <a title="Showing the post password form for excerpts in WordPress" href="http://justintadlock.com/archives/2009/06/24/showing-the-post-password-form-for-excerpts-in-wordpress#comment-136641">comment</a>, by J Mehmett in a Justin Tadlock tutorial, show us how to replace the default excerpt text — HTML allowed:
[php htmlscript="true" highlight="4"]<?php function excerpt_protected( $excerpt ) { if ( post_password_required() ) $excerpt = '[This is password-protected.]';
return $excerpt; }
add_filter( 'the_excerpt', 'excerpt_protected' ); ?>[/php]
The above goes in your functions.php
file. Put your password-protected excerpt-text where mine sez: [This is password-protected.]
.
Lastly, JT's tut also shows us how to <a title="Showing the post password form for excerpts in WordPress" href="http://justintadlock.com/archives/2009/06/24/showing-the-post-password-form-for-excerpts-in-wordpress">"Show the post password form for excerpts</a>" by calling the core function <a title="post-template.php in tags/3.1.1/wp-includes – WordPress Trac" href="http://core.trac.wordpress.org/browser/tags/3.1.1/wp-includes/post-template.php#L1201">get_the_password_form()
</a>.
Now go protect some Posts with personally preferable replacement prose.
"Password goes here" Edit Post or the Quick Edit screens