【问题标题】:Wordpress - Private Upload FolderWordpress - 私人上传文件夹
【发布时间】:2013-11-30 04:26:19
【问题描述】:

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

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

我了解如何在数据库和如何上传文件等方面执行此操作。

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

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

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

【问题讨论】:

    标签: php wordpress security private


    【解决方案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 过滤器非常强大,它会修改查询。谨慎使用并在不需要时取下过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-03
      • 2011-10-01
      • 2015-06-06
      • 2016-02-19
      • 2011-10-01
      • 2013-04-06
      • 1970-01-01
      • 2019-04-11
      相关资源
      最近更新 更多