1

这超越了帖子和媒体。我有几个 CPT 和一个日历。有没有办法让 wordpress 检查用户名并只显示他们创建的内容?

4

3 回答 3

2

In the backend, to filter all post types that are shown and restrict the visualization you can use pre_get_posts.

add_action( 'pre_get_posts', 'users_own_content_so_12761756' );

/**
 * Show only posts of the current user in the dashboard
 * affects posts, pages, media and custom post types
 */
function users_own_content_so_12761756( $wp_query_obj ) 
{
    // Restrict hook to the backend
    if( !is_admin() )
        return;

    global $current_user;
    get_currentuserinfo();

    // http://php.net/manual/en/function.is-a.php
    if( !is_a( $current_user, 'WP_User') )
        return;

    if( !current_user_can( 'administrator' ) )
        $wp_query_obj->set( 'author', $current_user->ID );
}

After applying this code, you'll notice that the post count is not correct: it'll show the total count and not the user count. To adjust that, refer to this Q&A: Update post counts (published, draft, unattached) in admin interface.

You'll need to care about user roles and capabilities as well, blocking the rights to edit someone else's posts/pages/cpts. That's because a user can type in the browser address example.com/wp-admin/post.php?post=POST_ID&action=edit and access the post, if he/she has the rights to do so.

于 2013-04-04T22:13:21.530 回答
0

您可以尝试将其添加到循环中

<?php $author = get_the_author(); 
$current_user = wp_get_current_user(); 
if($author != $current_user->user_nicename) {
    echo "permission denied";
    break;
} ?>
于 2013-04-04T06:44:16.187 回答
0

我使用成员插件为用户创建自定义角色。

http://wordpress.org/extend/plugins/members/

于 2013-04-09T21:30:17.487 回答