Wordpress-ACF:对非管理员用户禁用用户配置文件中的转发器字段

时间:2018-12-06 11:12:14

标签: javascript php wordpress

在用户个人资料页面中,我添加了具有2个子字段(选择和日期选择器)的转发器ACF。如果用户不是管理员,我希望禁用此字段。因此,管理员可以编辑此字段,而其他用户只能查看。有可能吗?

我已经尝试过找到here的解决方案,但是它仅适用于简单字段,不适用于ACF

如果不可能,如何创建表并从数据库中获取字段以在用户个人资料页面中呈现它们?

这是我用来禁用普通字段的代码:

/* Disables selected fields in (profile.php) */
function atroul_profile_fields_disable_js() {
?>
  <script>
    jQuery(document).ready( function($) {
      var fields_to_disable = ['first_name', 'last_name', 'display_name'];
      for(i=0; i<fields_to_disable.length; i++) {
        if ( $('#'+ fields_to_disable[i]).length ) {
          $('#'+ fields_to_disable[i]).attr("disabled", "disabled");
        }
      }   
    });
  </script>
<?php
}

function atroul_profile_fields_disable() {
  global $pagenow;
  if ($pagenow!=='profile.php') 
  {
    return;
  }
  if (current_user_can('administrator')) 
  {
    return;
  }
  add_action( 'admin_footer', 'atroul_profile_fields_disable_js' );
  //add_action('admin_head','atroul_remove_personal_options');
}
add_action('admin_init', 'atroul_profile_fields_disable');

1 个答案:

答案 0 :(得分:0)

用下面的代码替换for循环

for(i=0; i<fields_to_disable.length; i++) {
        if ( $('tr[data-name="'+fields_to_disable[i]+'"]').length ) {
          $('tr[data-name="'+fields_to_disable[i]+'"] input').attr("disabled", "disabled");
          $('tr[data-name="'+fields_to_disable[i]+'"] select').attr("disabled", "disabled");
        }
      }