允许 "customer" 用户角色使用 acf_form 在前端上传文件

Allow "customer" user role to upload files in front-end with acf_form

我在 woocommerce "view order" 页面中使用 acf_form()(高级自定义字段前端表单)创建了一个前端表单,允许客户为我们上传一些文件,该表单有效对于管理员来说很好,但是当您使用客户帐户登录并选择文件时,它会显示 "you don't have permission to attach files" ,经过一些研究后,我通过将以下代码添加到 functions.php 来编辑 "customer"

/**
 * 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"插件,但还是不行

请帮帮我!

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

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

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

希望这对某人有所帮助!

我正在使用 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' );

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

$author->add_cap('manage_options');

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