Wordpress:为用户创建一个新的 usermeta 字段

     2023-03-14     195

关键词:

【中文标题】Wordpress:为用户创建一个新的 usermeta 字段【英文标题】:Wordpress: Create a new usermeta field for users 【发布时间】:2011-09-02 17:54:28 【问题描述】:

如何使用下拉选择值创建新的用户元字段?

我想为所有具有我想要的新自定义字段的特定值的用户创建一个条件语句。

例如,

新字段将是:已批准 下拉值是:是和否

条件语句将识别 Approved 字段值为 Yes 的所有用户。然后它会发布一个代码。

我正在使用 wp_get_current_user 函数(),这正是我需要的,但我只需要一个新的自定义 usermeta 字段。在示例中,新的 usermeta 字段将是“artwork_approved”。

例子:

wp_get_current_user();
if ($current_user->artwork_approved == 'Yes')
    echo 'Thank you for approving your artwork!';

似乎没有插件,我真的需要这个功能。我非常感谢一些关于创建带有下拉选项的新用户元的建议。

*更新:

我使用 Register Plus Redux 创建了一个新的 usermeta 字段,称为“Artwork Approved”。我将其设为下拉选项,带有“否”和“是”选项。否选项设置为默认值。

这创建了“Artwork Approved”用户元字段。我管理用户帐户并选择是或否。现在有了这个新的 usermeta 字段,我正在使用一个函数来检查当前用户是否拥有值为 Yes 的 Artwork Approved。那么它应该显示某个代码。

这是我在新的 usermeta 字段中使用的 if 语句:

<?php global $current_user; get_currentuserinfo(); if ($current_user->artwork_approved == 'Yes')  ?>

echo 'Your artwork is approved';

<?php  else  ?>         

echo 'Your artwork is not approved';

<?php  ?> 

但是发生的事情是它没有识别 if 语句的第一部分。如果我登录任何已批准艺术品的帐户,即使我有艺术品批准的选项“是”,if 语句也只会显示“else”部分。

我不知道为什么它不能识别我在声明中的“是”选项。

谢谢

【问题讨论】:

【参考方案1】:

您可以创建一个简单的插件来挂钩用户配置文件操作并添加一个新字段。

要将字段添加到表单中,您可以挂钩show_user_profileedit_user_profile 操作并输出表单字段 HTML。下面使用复选框而不是下拉菜单。

add_action('show_user_profile', 'my_user_profile_edit_action');
add_action('edit_user_profile', 'my_user_profile_edit_action');
function my_user_profile_edit_action($user) 
  $checked = (isset($user->artwork_approved) && $user->artwork_approved) ? ' checked="checked"' : '';
?>
  <h3>Other</h3>
  <label for="artwork_approved">
    <input name="artwork_approved" type="checkbox" id="artwork_approved" value="1"<?php echo $checked; ?>>
    Artwork approved
  </label>
<?php 

然后您需要挂钩personal_options_updateedit_user_profile_update 操作,获取字段的值并将其保存为用户元。

add_action('personal_options_update', 'my_user_profile_update_action');
add_action('edit_user_profile_update', 'my_user_profile_update_action');
function my_user_profile_update_action($user_id) 
  update_user_meta($user_id, 'artwork_approved', isset($_POST['artwork_approved']));

您的情况将如下所示。

if (get_user_meta($current_user->ID, 'artwork_approved', true)) 

【讨论】:

谢谢理查德。我找到了一个可行的解决方案……我使用的是 Register Plus Redux 插件,它可以创建新的用户元。我已经用更多信息更新了我的帖子。我会很感激你的意见。非常感谢! 感谢 Richard,您的解决方案非常有效。我看到的唯一问题是,当我在管理部分中选中用户批准框时,更新页面后未选中该框。如果我们的一名员工查看该客户,他们将不知道他们是否获得批准。因此,如果我想取消选中(不批准)该框,我该怎么做?谢谢 我想我需要像您建议的那样将其创建为插件...我将您提供给我的第一个代码块添加到我的管理员成员 php 页面,在那里我上传照片以供批准。我添加到网站前端的第二个也是最后一个块,客户将在那里看到。查看我的数据库后,我找不到任何对“artwork_approved”的引用。我猜它没有被输入到数据库中,因为我没有正确注册。 @gdinari 我对Register Plus Redux 不熟悉,所以无法帮助您。至于我回答中的代码,第一个和第二个块都应该在插件中。完整的插件应该类似于gist.github.com/1000916。可以在需要检查artwork_approved 值的任何地方使用最终块(条件)。 谢谢一百万。我会试试这个!【参考方案2】:

不应该读取第二个代码块:

add_action('personal_options_update', 'my_user_profile_update_action');
add_action('edit_user_profile_update', 'my_user_profile_update_action');
function my_user_profile_update_action($user_id) 
  update_user_meta($user_id, 'artwork_approved', $_POST['artwork_approved']);

update_user_meta保存的值是$_POST['artwork_approved']而不是isset($_POST['artwork_approved'])

【讨论】:

好点,但我建议像这样清理数据:update_user_meta($user_id, 'artwork_approved', isset($_POST['artwork_approved']) ? 1 : 0 ); 因为它使用了复选框“artwork_approved”,如果未选中,它不会出现在 $_POST 数组中。

为 Wordpress 中的每个新帖子自动创建一个新的 Mailchimp 邮件列表(M​​ailchimp API 3.0+)

】为Wordpress中的每个新帖子自动创建一个新的Mailchimp邮件列表(M​​ailchimpAPI3.0+)【英文标题】:AutomaticallycreateanewMailchimpmailinglistforeachnewpostinWordpress(MailchimpAPI3.0+)【发布时间】:2018-06-2517:51:09【问题描述】:要求:创建新帖子... 查看详情

如何从 FTP 创建新的 wordpress 管理员用户

】如何从FTP创建新的wordpress管理员用户【英文标题】:HowtocreatenewwordpressadminuserfromFTP【发布时间】:2018-11-1307:02:47【问题描述】:我已经有几年没有登录过我网站的wordpress后端了。然而,现在我使用的密码似乎都不起作用。我要... 查看详情

为inno setup创建一个新的用户组[重复]

】为innosetup创建一个新的用户组[重复]【英文标题】:Createanewusersgroupforinnosetup[duplicate]【发布时间】:2020-11-1615:28:49【问题描述】:我需要创建一个新的用户组,因为它不包含在已经创建的用户组中:authusersAuthenticatedUsersgroupcrea... 查看详情

在 wordpress 中为多个站点创建编辑器

】在wordpress中为多个站点创建编辑器【英文标题】:Creatingaeditorformultiplesitesinwordpress【发布时间】:2014-06-3016:32:46【问题描述】:在Wordpress多站点平台上,通常如果我创建“编辑”用户帐户,该用户只能对正在创建的站点执行职... 查看详情

为 WordPress 插件存储变量而不创建新表

】为WordPress插件存储变量而不创建新表【英文标题】:StoringavariableforaWordPresspluginwithoutcreatinganewtable【发布时间】:2014-07-0606:42:21【问题描述】:我正在创建一个自定义主题,它提供了一种更改WordPress网站主页布局的方法。我想... 查看详情

sh为postgres创建一个新的管理员用户(代码片段)

查看详情

使用 WordPress 进行用户身份验证

】使用WordPress进行用户身份验证【英文标题】:UserAuthenticationwithWordPress【发布时间】:2014-02-0723:58:47【问题描述】:我对WordPress很陌生;我通常使用HTML、JQuery和PHP构建我的网站和Web应用程序。这个WordPress的东西让我陷入了困境... 查看详情

Wordpress:有条件地更改用户角色

】Wordpress:有条件地更改用户角色【英文标题】:Wordpress:Changeuserroleconditionally【发布时间】:2012-02-2904:29:12【问题描述】:我正在为多位作者创建一个Wordpress网站,并希望根据文章提交设置用户角色。表示如果任何用户有0-10篇... 查看详情

VSTS 如何创建新的用户字段

】VSTS如何创建新的用户字段【英文标题】:VSTShowtocreateanewuserfield【发布时间】:2017-01-2800:21:16【问题描述】:我正在尝试在VSTS中创建一个类似于分配给的新用户字段。分配给的类型为“文本(单行)”,但其作用类似于用户搜... 查看详情

使用 WordPress 插件从 pdf 创建 jpgs

】使用WordPress插件从pdf创建jpgs【英文标题】:CreatejpgsfrompdfwithWordPressplugin【发布时间】:2015-10-1015:40:12【问题描述】:我正在开发一个插件,它可以从上传的pdf文件的每一页创建jpgs。我使用wp_handle_upload操作并检查mime类型是否... 查看详情

sql添加新的wordpress用户(代码片段)

查看详情

使用 Python 和 MySQLdb 将新用户添加到 Wordpress

】使用Python和MySQLdb将新用户添加到Wordpress【英文标题】:AddnewusertoWordpressusingPythonandMySQLdb【发布时间】:2015-02-1616:51:19【问题描述】:我正在尝试从Python添加一个新的Wordpress用户。我创建了这个函数:defadduser(domain_ip,username,passw... 查看详情

wordpress是干啥?主要用途啥?

Wordpress是一个以PHP和MySQL为平台的免费自由开源的博客软件和内容管理系统。WordPress拥有互联网内容管理系统近60%的市场份额是有原因的。其中一些亮点包括:1、适合初学者的无代码环境。2、易于理解的工具和功能。3、来自开... 查看详情

仅为当前用户求和自定义字段 - Wordpress

】仅为当前用户求和自定义字段-Wordpress【英文标题】:SumCustomFieldForCurrentUserOnly-Wordpress【发布时间】:2014-12-2320:01:14【问题描述】:我要做的是在Wordpress中为当前登录的用户查询和汇总一个自定义字段。我的写作公司有一个网... 查看详情

如何在centos7上全新安装wordpress程序

1.数据库部署为Wordpress程序创建用户名为360readuser,密码为360readpsd的数据库。登陆数据库:mysql-uroot-p创建数据库:CREATEDATABASE360read;创建数据库用户:CREATEUSER360readuser@localhostIDENTIFIEDBY\'360readpsd\';给用户所有权限:GRANTALLPRIVILEGESON36... 查看详情

如何在centos7上全新安装wordpress程序

1.数据库部署为Wordpress程序创建用户名为360readuser,密码为360readpsd的数据库。登陆数据库:mysql-uroot-p创建数据库:CREATEDATABASE360read;创建数据库用户:CREATEUSER360readuser@localhostIDENTIFIEDBY‘360readpsd';给用户所有权限:GRANTALLPRIVILEGES... 查看详情

为机器人用户创建 Slack 频道

】为机器人用户创建Slack频道【英文标题】:CreateSlackChannelforBotUser【发布时间】:2017-03-1810:25:49【问题描述】:我正在为我的平台创建一个网络集成,使用机器人用户来“记录”某些事件。我想为每种事件类型创建一个新的频道... 查看详情

text为wordpress创建一个'即将推出'页面(代码片段)

查看详情