对非管理员隐藏某些高级自定义字段

pow*_*uoy 1 php wordpress advanced-custom-fields

我使用 ACF 的“灵活内容”创建了一个相当先进的“页面构建器”,作者可以在其中创建一个“部分”(基本上只是一个带有 CSS 类名称和 ID 的包装元素),然后添加我所有的灵活内容(图像、所见即所得等)。

我想做的是为非管理员隐藏一些字段。我不希望任何旧的编辑器能够进入并更改部分的 ID 或类名称(因为这会弄乱布局)。

我知道 ACF 管理中的“规则”面板,您可以在其中选择仅向一种类型的用户角色显示特定字段组,但我想要的是同一件事,但针对各个字段。

它似乎无法从管理界面中完成,但我想知道是否有人知道如何从我的functions.php 文件中完成它?也许我可以根据当前用户的角色挂钩并禁用某些过滤器或操作?

我附上了两张屏幕截图,显示了我想要隐藏的内容:

我想从“添加行”菜单中隐藏这些选项:

在此输入图像描述

我希望这些面板对非管理员不可见:

在此输入图像描述

编辑:当我们这样做时,我也不介意从可重复项中隐藏单个字段。您会注意到第一个屏幕截图中的“修饰符”字段,这也很好地对非管理员隐藏。我想这两个问题的解决方案几乎是相同的?

her*_*did 6

从 ACF 5.0.0 开始,有一种更简单的方法可以执行此操作,而无需禁用字段或输出 CSS。如果您使用acf/prepare_field钩子并返回false该字段将不会呈现。

<?php
function so37111468_hide_field( $field ) {

  // hide the field if the current user is not able to save options within the admin
  if ( ! current_user_can( 'manage_options' ) ) {
    return false;
  }

  return $field;
}

add_filter( 'acf/prepare_field/key=MYFIELDKEY', 'so37111468_hide_field' );
?>
Run Code Online (Sandbox Code Playgroud)

该过滤器的文档可以在这里找到: https: //www.advancedcustomfields.com/resources/acf-prepare_field/