填写完字段后锁定用户信息

时间:2013-11-07 作者:SixfootJames

就像用户名被锁定,一旦注册就无法更改一样,我想锁定我用高级自定义字段创建的其他字段,如个人的手机号码,这对我们来说至关重要,因为它链接到安全门入口,不应更改

我需要做到的是,一旦有人填写了一个字段并提交了他们的新信息,当页面重新加载时,该字段需要锁定,只有管理员才能更改它。

我知道javascript可以做到这一点,但我想确保知道如何使用开发人员工具栏的人不能更改字段属性并提交或删除内容。或者,如果有人碰巧关掉了JS,他们就可以改变这一点。

有没有一个WordPress挂钩可以做这样的事情?以下是我的发现,没有一个支持我的解决方案。

  1. http://wordpress.org/support/topic/how-to-disable-profile-fields
  2. http://adambrown.info/p/wp_hooks/version/3.6 (查看是否存在这样的挂钩)
EDIT:

我已经在使用jQuery来检查需要保持锁定并禁用它们的字段,但我更想知道的是,在WP中是否有任何钩子可以用来执行此操作,因为有人可能知道如何在拥有足够的开发工具条知识的情况下绕过此操作?我也做了大量的搜索,没有什么比我在这里要做的更具体的了。

非常感谢

1 个回复
SO网友:Marcos Rodrigues

我认为这可以满足您的需求:

这是过滤器文档http://www.advancedcustomfields.com/resources/filters/acf_update_value/

您可以选择所需的任何筛选器选项,但如果您使用前两个选项中的onw

add_filter(\'acf/update_value\', \'mr_acf_prevent_update\', 10, 3);
add_filter(\'acf/update_value/type=text\', \'mr_acf_prevent_update\', 10, 3);
您必须在回调函数上编写更多的条件。

如果你使用这两种方法中的一种,你不需要

// example with the field name
add_filter(\'acf/update_value/name=cell-phone\', \'mr_acf_prevent_update\', 10, 3);
// example with the field key
add_filter(\'acf/update_value/key=field_527bb4af7edde\', \'my_acf_load_field\', 10, 3);
以及执行此操作的回调

function mr_acf_prevent_update( $value, $post_id, $field ) {

    if ( current_user_can( \'manage_options\' ) || get_field( $field[\'name\'], $post_id ) == \'\'  ) {

        return $value;

    } else {
        return get_field( $field[\'name\'], $post_id );
    }

}
它是可以改进的,虽然很难看,但它确实有效!

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴

填写完字段后锁定用户信息 - 小码农CODE - 行之有效找到问题解决它

填写完字段后锁定用户信息

时间:2013-11-07 作者:SixfootJames

就像用户名被锁定,一旦注册就无法更改一样,我想锁定我用高级自定义字段创建的其他字段,如个人的手机号码,这对我们来说至关重要,因为它链接到安全门入口,不应更改

我需要做到的是,一旦有人填写了一个字段并提交了他们的新信息,当页面重新加载时,该字段需要锁定,只有管理员才能更改它。

我知道javascript可以做到这一点,但我想确保知道如何使用开发人员工具栏的人不能更改字段属性并提交或删除内容。或者,如果有人碰巧关掉了JS,他们就可以改变这一点。

有没有一个WordPress挂钩可以做这样的事情?以下是我的发现,没有一个支持我的解决方案。

  1. http://wordpress.org/support/topic/how-to-disable-profile-fields
  2. http://adambrown.info/p/wp_hooks/version/3.6 (查看是否存在这样的挂钩)
EDIT:

我已经在使用jQuery来检查需要保持锁定并禁用它们的字段,但我更想知道的是,在WP中是否有任何钩子可以用来执行此操作,因为有人可能知道如何在拥有足够的开发工具条知识的情况下绕过此操作?我也做了大量的搜索,没有什么比我在这里要做的更具体的了。

非常感谢

1 个回复
SO网友:Marcos Rodrigues

我认为这可以满足您的需求:

这是过滤器文档http://www.advancedcustomfields.com/resources/filters/acf_update_value/

您可以选择所需的任何筛选器选项,但如果您使用前两个选项中的onw

add_filter(\'acf/update_value\', \'mr_acf_prevent_update\', 10, 3);
add_filter(\'acf/update_value/type=text\', \'mr_acf_prevent_update\', 10, 3);
您必须在回调函数上编写更多的条件。

如果你使用这两种方法中的一种,你不需要

// example with the field name
add_filter(\'acf/update_value/name=cell-phone\', \'mr_acf_prevent_update\', 10, 3);
// example with the field key
add_filter(\'acf/update_value/key=field_527bb4af7edde\', \'my_acf_load_field\', 10, 3);
以及执行此操作的回调

function mr_acf_prevent_update( $value, $post_id, $field ) {

    if ( current_user_can( \'manage_options\' ) || get_field( $field[\'name\'], $post_id ) == \'\'  ) {

        return $value;

    } else {
        return get_field( $field[\'name\'], $post_id );
    }

}
它是可以改进的,虽然很难看,但它确实有效!

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。