Adding a link to logout of password protected posts in WordPress

I needed to add a “logout” link to a theme on which I’m working that would clear the cookie WordPress sets for password protected posts. This is what I came up with:

<?php if ( $_COOKIE['wp-postpass_' . COOKIEHASH] ) { ?>
  | <a href="<?php echo get_template_directory_uri(); ?>/includes/logout.php">Log Out</a>
<?php } ?>

COOKIEHASH is a constant set by WordPress that contains a hash of your blog URL.

For the actual cookie clearing functionality, you can use something like this script over at Stack Overflow.

Some snippets for password-protected pages in WordPress

I was working on a site that required protected pages in WordPress, and had a few snippets that I thought were worth capturing.

By default WordPress prepends the title of a page or post with “Private:” or “Protected:” if you change the document’s visibility. This is ugly, and I can’t see the point of it. The following snippet, added to your functions.php, will remove that.

add_filter( 'private_title_format', 'no_private_title_format' );
add_filter( 'protected_title_format', 'no_private_title_format' );
 
function no_private_title_format( $format ) {
  return '%s';
}

The next function creates a custom form. I’m using the Modest theme, this is a modified version of their form. You can get more detail at WP Tuts+

add_filter( 'the_password_form', 'custom_password_form' );
function custom_password_form() {
    global $post;
    $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
    $action = get_option('siteurl') . '/wp-login.php?action=postpass';
    $o  = <<<EOT
<div id="et-login">
  <div class='et-protected'>
    <div class='et-protected-form'>
      <form action='$action' method='post'>
        <p><label><span>Password: </span><input type='password' name='post_password' id='$label' size='20' /><span class='et_protected_icon et_protected_password'></span></label></p>
        <input type='submit' name='submit' value='Login' class='etlogin-button' />
      </form>
    </div>
  </div>
</div>
EOT;
    return $o;
}

Finally, don’t forget that the sidebar and custom fields aren’t hidden by password protection. If you don’t want something to show up, wrap it like this (this example is grabbing a field set by Advanced Custom Fields):

<?php
  if ( !post_password_required() ) {
    echo get_field( 'sidebar' );
  }
?>

Cleaning formatting from text on the Mac OS X pasteboard

There are a number of apps floating around that can strip rich text formatting from whatever you’ve copied to the pasteboard. I’m not sure why you’d need to buy an app for this. Here are two ways to get plain text.

⌘⌥⇧V – Paste and match style will give you plain text if you’re pasting into plain text. Otherwise you’ll get rich text that matches the formatting applied to wherever you’re pasting the text. I use this one a tonne in spreadsheets where I’m collecting information from web pages.

pbpaste | pbcopy – run this at the command prompt. It just pipes the pasteboard contents back into the pasteboard, but will remove all formatting as a result.