我正在创建一个几乎像crm系统的wp插件。
我希望wordpress后端的注册用户能够上传文件(pdf,doc,png)并将这些文件附加到他们的客户记录中。
我理解如何在数据库方面以及如何上传文件等方面做到这一点。
我想将文件的访问权限限制为管理员或仅上传用户。任何公共用户或其他用户都无法访问这些上传的文件。
您是否会为非公开文件夹中的每个用户创建一个新的上传文件夹,并且只能通过编程方式检查凭据来访问该文件?
有没有已知或更好的方法来做到这一点?
答案 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
过滤器功能非常强大,可以修改查询。请谨慎使用,并在不需要时取下过滤器。