使用Foreach时重复自定义字段

时间:2019-08-29 作者:Michelle

我正在尝试使用如下自定义字段通过登录用户名显示用户头像-

enter image description here

这是密码-

function user_avatar() {

        $name  = get_post_meta( get_the_ID(), \'user_name\', true );

        $users = get_user_by( \'login\', $name  );

        foreach( (array) $users as $user )

        authors();
}


function authors() {

    $gravatar = get_avatar( $user->user_email , 32 );

    echo $gravatar;

}
然而,除了我想要打印的唯一一个头像之外,此代码还会重复头像。

enter image description here

我只需要打印头像,其中有一个基于用户名的自定义字段值。

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

如果要使用多个用户,请在自定义字段中添加逗号分隔的用户名。尝试以下代码。

function user_avatar() {
    $user = "";
    $names  = get_post_meta( get_the_ID(), \'user_name\', true );
    $user_names = array_map(\'trim\', explode(\',\', $names));
    if(!empty($user_names))
    {
       foreach ($user_names as $key => $user_name) 
       {
          $user = get_user_by( \'login\', $user_name  );
          if($user)
          {
              $gravatar = get_avatar( $user->user_email , 32 );
              echo $gravatar;
          }
       }
    }
}
Edit : 我也试过-

$names  = get_post_custom_values( \'user_name\' );
我在使用相同的自定义字段键时对此进行了测试user_name 每个用户具有不同的登录用户名。

如果要使用get\\u post\\u custom\\u value();在下面尝试

function user_avatar() {
        $user = "";
        $names  = get_post_custom_values( \'user_name\', get_the_ID() );
        if(!empty($names))
        {
           foreach ($names as $key => $user_name) 
           {
              $user = get_user_by( \'login\', $user_name  );
              if($user)
              {
                  $gravatar = get_avatar( $user->user_email , 32 );
                  echo $gravatar;
              }
           }
        }
    }

相关推荐

Filter Tags for current users

我有一个自定义的post类型调用问题,它有自定义的分类法,称为问题标签。这些问号进一步用于创建动态测验。我想限制用户只使用他们创建的问号。他们无法访问其他人创建的标签。怎么可能呢?让我知道如何让每个用户的标签都是私有的,这样他们就不能在前端表单中使用彼此创建的标签了