允许“客户”用户角色使用 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 在前端上传文件的主要内容,如果未能解决你的问题,请参考以下文章
哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?
根据 Woocommerce 中的用户角色自定义客户新帐户邮件