Below is the code to set WordPress posts visibility to private by default.
<?php | |
//* Set WordPress posts visibility to private by default | |
function customprefix_default_posts_to_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 | |
} | |
add_action( 'post_submitbox_misc_actions' , 'customprefix_default_posts_to_private' ); |
Alternatively, you can download and install Private Posts by Default from the WordPress Plugin Repository.