Change DNS servers from the command line in Mac OS X

Changing DNS servers isn’t something most people need to do frequently. When you do need to change them up, though, it takes too many clicks in System Preferences. Use networksetup at the command line instead. For example, to change your DNS server to the OpenDNS servers, issue the following (if you’re using Ethernet):

sudo networksetup -setdnsservers Ethernet 208.67.222.222 208.67.220.220

To get a list of all the network services you could be using, run

networksetup -listallnetworkservices

If you make a lot of changes to your network throughout the day, it’s worth getting to know what networksetup can do. And don’t forget that any command you can run in a shell can be incorporated into an AppleScript or Automator workflow with do shell script.

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' );
  }
?>