WordPressのデフォルト投稿状態を「非公開」にする

WordPressを日記帳として活用していますが、デフォルトの公開状態が「公開」になっているため、油断をすると日記がネット上に公開されてしまう問題がちょくちょく発生します。

このようなことを避けるため、投稿記事の「公開状態」のデフォルトを「公開」から「非公開」にする方法についてメモをしておきます。

wp-includes/functions.php」に次のコードを追加する。

/**
 * Set default state to private' when creating new draft article
 */
add_action( 'post_submitbox_misc_actions' , 'post_status_default_private' );
function post_status_default_private() {
    global $post;

    if ( $post->post_status == 'publish' ) {
        $visibility = 'public';
        $visibility_trans = __('Public');
    } elseif ( !empty( $post->post_password ) ) {
        $visibility = 'password';
        $visibility_trans = __('Password protected');
    } elseif ( $post->post_type == 'post' && is_sticky( $post->ID ) ) {
        $visibility = 'public';
        $visibility_trans = __('Public, Sticky');
    } else {
        $post->post_password = '';
        $visibility = 'private';
        $visibility_trans = __('Private');
    } 
?>
    <script type="text/javascript">
    (function($){
        try {
            $('#post-visibility-display').text('<?php echo $visibility_trans; ?>');
            $('#hidden-post-visibility').val('<?php echo $visibility; ?>');
            $('#visibility-radio-<?php echo $visibility; ?>').attr('checked', true);
        } catch(err) {
        }
    })(jQuery);
    </script>
<?php
}Code language: PHP (php)