Support » Networking WordPress » Setting new Posts Privacy to Protected by Default

  • Resolved henshall


    There’s a great answer to how to set new post visibility to private by default. I found it here. However, this appears to apply to a single user site. I am running a multi-site.

    Is there a way to make this optional on a multiuser site by blog? I presume if I insert this code it will make all sites in this network perform this way from here on out. How would I amend the code for a multiuser site? What will be the impact on blogs that were already created on this network? Presume new posts will go to protected?

    Application/User Case. I have multiple registered users. Some are respondents which are submitting data via forms (contributors) I would like them to be able to read their posts only. A subscriber may only be able to see a few pages. Other… example authors can read all posts when logged in. Ie they have access to all protected posts.

    I don’t know of a plug-in that helps me manage this. Any solutions?

    Thank you.

Viewing 7 replies - 1 through 7 (of 7 total)
  • Moderator Ipstenu (Mika Epstein)


    Lead Plugin Wrangler

    That very last answer –

    That can be applied to a plugin and put in your mu-plugins folder, which would activate for all sites.

    Ok… sort of. I see the code referenced although I’m not quite sure where to go from there. Do I just create a new plug-in from that code? Is there anything else that needs to go in this plug-in? I probably don’t understand enough. Thanks.

    Moderator Ipstenu (Mika Epstein)


    Lead Plugin Wrangler

    Make a file called ‘private-by-default.php’

    In that file, you put this:

    Plugin Name: Name Of The Plugin
    Description: A brief description of the Plugin.
    [all the code from that post]

    Put that file into the /wp-content/mu-plugins/ folder.

    Thank you much appreciated. I checked out the plug-in codex in the meantime. I will give it a go.

    The plug-in worked. Posts are on the activated blog are now auto posted as private. This is very useful where I am using forms and want the form fillers to see their posts only (and not protected), while others can be given the permissions to see all posts. In this instance it would be useful to remove the “private: hello world” as a notation.

    I note in the previous thread this:

    To remove the “Private: ” part from the title of the post, change the following line of code in your code above:
    $private_title_format = apply_filters(‘private_title_format’, __(‘Private: %s’));

    To this:
    $private_title_format = apply_filters(‘private_title_format’, __(‘%s’));

    Anyway I can incorporate this into the same solution? Thanks for your time much appreciated.

    Moderator Ipstenu (Mika Epstein)


    Lead Plugin Wrangler

    Not exactly, since the fix that post provides tells you to edit core, which you don’t want to do. You’ll hate it.

    Put this in your plugin though:

    function the_title_trim($title) {
    	// Might as well make use of this function to escape attributes
    	$title = attribute_escape($title);
    	// What to find in the title
    	$findthese = array(
    		'#Protected:#', // # is just the delimiter
    	// What to replace it with
    	$replacewith = array(
    		'a', // What to replace protected with
    		'b' // What to replace private with
    	// Items replace by array key
    	$title = preg_replace($findthese, $replacewith, $title);
    	return $title;
    add_filter('the_title', 'the_title_trim');

    Put it ABOVE the ?> at the end 🙂

    Brilliant! Thank you. Worked like a charm.

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘Setting new Posts Privacy to Protected by Default’ is closed to new replies.