Wordpress - 专用上传文件夹

时间:2013-11-16 20:54:59

标签: php wordpress security private

我正在创建一个几乎像crm系统的wp插件。

我希望wordpress后端的注册用户能够上传文件(pdf,doc,png)并将这些文件附加到他们的客户记录中。

我理解如何在数据库方面以及如何上传文件等方面做到这一点。

我想将文件的访问权限限制为管理员或仅上传用户。任何公共用户或其他用户都无法访问这些上传的文件。

您是否会为非公开文件夹中的每个用户创建一个新的上传文件夹,并且只能通过编程方式检查凭据来访问该文件?

有没有已知或更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

/* ===============================================
* RESTRICT - SHOW ONLY OWN ATTACHMENTS
=================================================*/

add_filter( 'posts_where', 'o99_attachments_wpquery_where' );

function o99_attachments_wpquery_where( $where ){
    global $current_user;

    if( is_user_logged_in() ){
        // we spreken over een ingelogde user
        if( isset( $_POST['action'] ) ){
            // library query
            if( $_POST['action'] == 'query-attachments'  && !current_user_can( 'level_10' )  ){ // o99 add optional user_can. remove if not needed
                $where .= ' AND post_author='.$current_user->data->ID;
            }
        }
    }

    return $where;
}

注意 - 这是一个示例,需要根据您的需要进行微调。

另请注意,posts_where过滤器功能非常强大,可以修改查询。请谨慎使用,并在不需要时取下过滤器。