检查是否存在任何用户的meta_value

时间:2012-09-10 作者:Andrei Iancu

我使用重力表单作为注册表单,并设置了一个隐藏字段,该字段自动填充生成的随机字符串,并通过

add_filter("gform_field_value_random_number", "generate_random_number");
function generate_random_number($value){
   $value =     substr(str_shuffle(str_repeat("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"     ,5)), 0, 7);
 }
这将用作唯一的优惠券代码/用户。此字段也显示在其用户配置文件中。

到目前为止一切都很好。我遇到的问题是检查数据库,没有用户已经有了优惠券代码。起初,我想使用get\\u user\\u meta,但一次只对一个user\\u id有效。我需要它来检查所有用户。因此,我想到的第二件事是执行类似这样的wpdb查询:

$wpdb->get_results(
    "
    SELECT meta_value
    FROM $wpdb->usermeta
    WHERE meta_key = \'Referral\'
        ")
我的最终功能基本上如下:

生成随机数并返回变量(例如:$value)

  • 执行while循环以检查数据库中是否已存在$value,如果$value与数据库中的任何内容不匹配,则结束循环

    编辑:抱歉,这里是网站:http://colorplan.ca

  • 1 个回复
    SO网友:westondeboer

    当我可以使用WordPress函数实现同样的功能时,我个人会尽量远离mysql查询。您可以尝试使用get_users, 这就是您想要实现的目标:

    <?php
        $blogusers = get_users(\'meta_value=Referral\');
        foreach ($blogusers as $user) {
            echo $user->user_email;
        }
    ?>
    
    未经测试。但这应该显示每个用户的用户元引用值为null。如果这样做有效,您可以更改echo$user->user\\u email;,更新\\u user\\u meta($用户->id,\'参考\',$优惠券\\u代码);

    结束