Php ACF禁用/隐藏多个用户名字段的选择选项
我使用的是高级自定义字段,我有一个名为“packages”的字段,有几个选择选项。用户可以在登录时创建和更改包。对于特定用户,此字段的某些选项不应可见。不是用户角色,而是用户名 这是选项,如果用户是“特定用户名”,则粗体选项不应可见或只读Php ACF禁用/隐藏多个用户名字段的选择选项,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我使用的是高级自定义字段,我有一个名为“packages”的字段,有几个选择选项。用户可以在登录时创建和更改包。对于特定用户,此字段的某些选项不应可见。不是用户角色,而是用户名 这是选项,如果用户是“特定用户名”,则粗体选项不应可见或只读 备用条目 备用启动 备份介质 -备份专业版 我搜索了很多,找到了很多文章,我设法让它工作起来,用这部分代码禁用了整个字段: function my_acf_prepare_field_wordpress( $field ) { $current_u
- 备用条目
- 备用启动
- 备份介质 -备份专业版
function my_acf_prepare_field_wordpress( $field ) {
$current_user = wp_get_current_user();
if( $current_user->user_login == "Username" ) {
if( $field['value'] ) {
$field['disabled'] = true;
}
}
return $field;
}
add_filter('acf/prepare_field/name=package_or_service', 'my_acf_prepare_field_wordpress');
此部分基于特定用户名禁用整个字段。是否有办法仅禁用此字段的特定选项
编辑
我做了这些更改以获取数组的索引值并取消设置,但到目前为止运气不佳:
function my_acf_prepare_field_wordpress( $field ) {
$current_user = wp_get_current_user();
if( $current_user->user_login == "Username" ) {
$choices = $field['choices'];
unset($field['choices'][webhosting]);
}
return $field;
}
add_filter('acf/prepare_field/name=package_or_service', 'my_acf_prepare_field_wordpress');
Vardump
数组(6){[“网络主机”]=>string(10)“网络主机”[“vps主机”]=>string(11)“vps主机”[“经销商主机”]=>string(16)“经销商主机”[“Domennaam”]=>string(10)“Domennaam”[“电子邮件”]=>string(5)“电子邮件”[“专用服务器”]=>string(16)“专用服务器”}我认为ACF目前没有任何机制可以禁用单个选项。不过,您可以完全删除该选项,首先从
$field['choices']
中删除相应的条目,谢谢您的回复。删除甚至比取消该选项更好。你是说我可以获得所有选项,然后删除我想要删除的特定选项?$field['choices']
应该已经保存了为该字段配置的所有选项,你可以在他们的支持论坛中查看类似的讨论,例如,他们在那里使用load\u字段
过滤器,而不是prepare\u字段
,但不确定这是否有区别。我认为您不应该在这里使用get\u field\u对象-$field
已经作为参数传递到此函数,它应该已经包含字段数据。放置var\u转储($field);退出在函数的开头进行编码>并检查它实际包含的内容。[“choices”]=>数组(6){[“webhosting”]=>字符串(10)“webhosting”
-好的,它似乎是一个关联数组,而不是一个数字索引数组。因此取消设置($field['choices']['webhosting']);
应该去掉该选项。(用实际要删除的选项的键替换webhosting
。)