Plugin Planet

Premium WordPress Plugins

This tutorial explains how to limit the display of posts to the currently logged-in post author. This is useful when you have a mutli-author blog where each author should only be able to view and edit their own posts. This technique works with or without USP Pro.

Method 1

Here is a good, WP-API method of limiting post display to the currently logged-in post author (i.e., so users can only view their own posts). Simply add the following snippet to your theme’s functions.php:

// limit post display to post author (excludes admins)
function shapeSpace_set_only_author($query) {
	global $current_user;
	if (!current_user_can('manage_options')) {
		$query->set('author', $current_user->ID);
	}
}
add_action('pre_get_posts', 'shapeSpace_set_only_author');

That will allow any admin-level users to see all posts; all other users will only see the posts they have written if they are logged into the site. To change it so that admins too can only see their own posts, check out the next method.

Method 2

To do the same thing as the previous method, but also limit post display to admin-level users, use this function instead:

// limit post display to post author (includes admins)
function shapeSpace_set_only_author($query) {
	global $current_user;
	$query->set('author', $current_user->ID);
}
add_action('pre_get_posts', 'shapeSpace_set_only_author');

As with the previous function, this code sets the post query so that only posts from the current logged-in author are returned.

For either of these methods, make sure to test well, all cases (logged in, logged out), different users, etc) before going live. The techniques are solid, but only tested on default WP installations. So if you are running a bunch of plugins, you’re gonna want to test everything for proper functionality.