阻止在第一个条目后更新前端的自定义用户配置文件元字段

时间:2020-06-05 作者:Carey Robinson

我有一个电子学习网站,当学生完成培训课程时,会颁发正式的结业证书。生成证书时,帐户上的用户配置文件名称可以用作学生名称,但如果用户更新其配置文件名称,则也会更新证书上的名称。这是一个问题,因为它允许用户完成一次课程,然后多次更新其用户配置文件名称,以便为其他几个人生成官方证书(无需完成培训或支付费用)。

我为学生姓名创建了一组自定义用户元字段,这些字段仅在后端公开,我更改了证书设置,以便它使用这些自定义元字段将学生姓名添加到证书中。如果我不在后端手动更新自定义元字段,它将保持空白,但我希望用户能够在前端为自己输入此信息一次,然后阻止将来从前端进行任何更新(只允许我在后端进行已批准的更新)。

如果前端用户配置文件页面上的自定义用户元输入字段为空,如何公开该字段,如果不为空,如何隐藏该字段?

1 个回复
最合适的回答,由SO网友:Tony Djukic 整理而成

您可以很容易地进行检查,查看该字段在数据库中是否已经有值,如果有,则显示名称,如果没有,则显示表单字段。您还没有提供任何代码,因此下面的示例是一段非常松散的伪代码,显示了该方法。

<?php
    $current_user = get_current_user_id();
    $student_name = get_user_meta( $current_user, \'student_name\', true );
    if( !empty( $student_name ) ) :
        echo \'<span class="student_name_provided">\' . $student_name . \'</span>\';
    else :
        echo \'<input type="text" name="student_name" id="student_name" value=""/>\';
    endif;
?>
所以如果!empty() 或不为空,则显示student_name span标记中的用户meta,您可以根据需要设置样式。

但是,如果检查返回的值为空student_name 而是加载一个文本输入字段,学生可以在其中提供自己的姓名。

现在,所有这些都需要与您设置的任何其他前端可编辑内容合并,但是if( !empty() ) : 条件检查是一个关键方面,因为它允许您更改在前端向用户提供的内容。

希望这有帮助。

相关推荐

Client Profiles

正在寻找创建客户机数据库的最佳方法。插件能最好地实现以下功能吗?我的客户端数据库插件存储有关客户端的个人信息和统计信息,这些信息和统计信息将通过自定义字段和自定义表单收集,管理员创建客户端配置文件后,仪表板选项卡将打开列表区域(类似于用户选项卡)(仅限管理员)“添加新”功能(类似于仪表板的用户区域)。管理员可以将客户端分配给用户,分配给用户的客户端显示为用户元数据。分配给用户的客户端将在用户配置文件中可见,仪表板小部件显示为登录用户分配的客户端,并带有指向客户端配置文件页面的链接。插件是解决此问题的解决方