允许“客户”用户角色使用 acf_form 在前端上传文件

Posted

技术标签:

【中文标题】允许“客户”用户角色使用 acf_form 在前端上传文件【英文标题】:Allow "customer" user role to upload files in front-end with acf_form 【发布时间】:2015-09-06 16:12:46 【问题描述】:

我在 woocommerce“查看订单”页面中使用acf_form()(高级自定义字段前端表单)创建了一个前端表单,允许客户为我们上传一些文件,该表单对管理员来说工作正常,但是当您使用客户帐户登录并选择您的文件,上面写着“您无权附加文件”,经过一些研究,我编辑了"customer",将以下代码添加到functions.php

/**
 * Allow customers to upload files
 *
 * @package Wordpress
 * @subpackage Rightec Theme
 * @author Dornaweb.com
 */
if ( current_user_can('customer') ) 
    add_action('init', 'allow_customer_uploads', 20);
    add_action('admin_init', 'allow_customer_uploads', 20);

function allow_customer_uploads() 
    $customer = get_role('customer');
    $customer->add_cap('upload_files');
    $customer->add_cap('unfiltered_upload');

我也试过"user role editor"插件,但它也不起作用

请帮帮我!

【问题讨论】:

有人吗?请它如此重要 没关系,我解决了这个问题:| 你最后是怎么解决这个问题的,我也遇到了同样的问题! @andycrone 这是3年前的事了,我真的不记得了,我丢失了项目文件,对不起 【参考方案1】:

我在尝试允许新的 WooCommerce 客户根据订单上传文件时也遇到了这个问题。除上述权限外,您还需要:

    确保您使用的是ACF Pro(必须购买)。 在您的 acf_form() 数组中定义 'uploader' => 'basic'。 将'edit_pages''edit_posts' 的功能添加到客户角色。

您需要 ACF Pro 来支持基本上传器,因为除非您是管理员,否则 WP Media 上传器永远不会允许从前端上传。

希望这对某人有所帮助!

【讨论】:

WP Media 上传器永远不会允许非管理员用户从前端上传实际上是不正确的。但是,用户需要将upload_files 功能设置为true。对我来说,'uploader' => 'wp'acf_form() 配合得很好。【参考方案2】:

我正在使用 ACF Pro 5.8.0,我已经使用下面的这个函数为作者角色添加了上限,并定义了 'uploader' => 'basic' 或 'uploader' => 'wp' 但作者仍然无法上传在前端。

function wp_add_upload_files_cap() 
    $role = get_role( 'author' ); //The role you want to grant the capability
    $role->add_cap( 'upload_files' );
    $role->add_cap( 'edit_pages' );
    $role->add_cap( 'edit_posts' );

register_activation_hook( __FILE__, 'wp_add_upload_files_cap' );

【讨论】:

【参考方案3】:

解决方案很简单。为用户提供这些功能:

$author->add_cap('manage_options');

【讨论】:

【参考方案4】:

upload_files 是我需要添加的唯一功能以实现此功能。请参阅第一个答案中的@toni_lehtimaki 评论。

【讨论】:

以上是关于允许“客户”用户角色使用 acf_form 在前端上传文件的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7所有角色的用户都需要可以从其他角色访问

哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?

根据 Woocommerce 中的用户角色自定义客户新帐户邮件

允许多个用户类型的简单授权问题

如何在不刷新页面的情况下使用 ajax 保存 acf_form

Spring Switching User:只允许具有特定角色的用户切换到具有特定角色的另一个用户