2017-05-07 88 views
2

我想在foreach循环之外输出用户名和用户电子邮件。我正试图发送电子邮件给某个用户角色中的所有WordPress用户。使用PHP以外的变量Foreach循环

这里是我的代码:

// Get users and their roles 
    $user_args = array(
     'role__in' => 'new_role', 
     'orderby' => 'user_nicename', 
     'order' => 'ASC' 
    ); 
    $users = get_users($user_args); 

    foreach ($users as $user) :  
     $user_name = $user->user_email; 
     $user_email = $user->display_name;   
    endforeach; 

这样我就可以在随后的页面,即其他领域使用它们:.

echo 'Hello, ' . $user_name; 
echo 'Send to: ' .$user_email; 

我打印出来的$用户数组,它包含以下内容:

Array 
(
    [0] => WP_User Object 
     (
      [data] => stdClass Object 
       (
        [ID] => 46 
        [user_login] => huw 
        [user_pass] => u7CqxbuQDvApUAF6tT. 
        [user_nicename] => huw 
        [user_email] => [email protected] 
        [user_url] => 
        [user_registered] => 2017-02-06 11:13:09 
        [user_activation_key] => 1486379590:$P$BkisA4T5j1S/ZjRageafNYHfsdin1S0 
        [user_status] => 0 
        [display_name] => Huw Daniel Rowlands 
       ) 

      [ID] => 46 
      [caps] => Array 
       (
        [sssg] => 1 
        [new_role] => 1 
        [site_member] => 1 
        [test_role] => 1 
       ) 

      [cap_key] => jciw_capabilities 
      [roles] => Array 
       (
        [0] => sssg 
        [1] => new_role 
        [2] => site_member 
        [3] => test_role 
       ) 

      [allcaps] => Array 
       (
        [read] => 1 
        [sssg] => 1 
        [new_role] => 1 
        [site_member] => 1 
        [test_role] => 1 
       ) 

      [filter] => 
     ) 

    [1] => WP_User Object 
     (
      [data] => stdClass Object 
       (
        [ID] => 308 
        [user_login] => jeremy 
        [user_pass] => LLOKbkPOWQsBKUIk2qL1 
        [user_nicename] => magnus 
        [user_email] => [email protected] 
        [user_url] => 
        [user_registered] => 2017-05-03 19:24:42 
        [user_activation_key] => 1493839482:$P$BI/IYldCzsXZowLEiNfxiUkIwVdDKV0 
        [user_status] => 0 
        [display_name] => Jeremy 
       ) 

      [ID] => 308 
      [caps] => Array 
       (
        [new_role] => 1 
        [sssg] => 1 
        [site_member] => 1 
       ) 

      [cap_key] => jciw_capabilities 
      [roles] => Array 
       (
        [0] => new_role 
        [1] => sssg 
        [2] => site_member 
       ) 

      [allcaps] => Array 
       (
        [read] => 1 
        [new_role] => 1 
        [sssg] => 1 
        [site_member] => 1 
       ) 

      [filter] => 
     ) 

) 
+0

我很困惑,你正在尝试做什么。如果你想在你的foreach循环中保存'user_name'和'user_email',你只需要每次覆盖变量直到最后一次迭代。看起来好像你只期望一个用户,那是对的吗? – Chris

回答

1

如果你想发送电子邮件给所有用户提供了一定的作用,尝试这样的事情:

// Get users and their roles 
$user_args = array(
    'role__in' => 'new_role', 
    'orderby' => 'user_nicename', 
    'order' => 'ASC' 
); 

$users = get_users($user_args); 

foreach ($users as $user) :  
    $user_email = $user->user_email; 
    $user_name = $user->display_name; 
    send_email($user_name, $user_email);   
endforeach; 

,然后写电子邮件功能:

function send_email($name, $email) { 
    // Do email sending stuff here with $name & $email 
} 
+0

感谢@Chris的帮助。我修改我的代码,现在包括这个: '的foreach($用户为$用户):\t \t \t \t $ USER_NAME = $用户> USER_EMAIL; \t \t $ user_email = $ user-> display_name; \t \t send_email($ user_name,$ user_email); \t endforeach;' 然后创建一个函数所需的电子邮件内容: '函数SEND_EMAIL($ USER_NAME,USER_EMAIL $){// 主体内容在这里... wp_mail($ ADMIN_EMAIL,$主题, $ body,$ headers); }' 但我没有收到任何电子邮件。 –

+0

@HuwRowlands是从哪里来的$ admin_email'?应该是'$ user_email'而不是? (另外我假设'$ subject','$ body'和'$ headers'是在使用前定义的,对吗? – Chris

+0

对不起。我更新了函数调用以包含其他一些变量: 'function send_email $ USER_NAME,$ USER_EMAIL,$ ADMIN_EMAIL,$ POST_ID,$ cat_list){' 这些是预先定义的。'$ admin_email'为发送电子邮件到该网站的管理员。 \t'$头=阵列( \t 'From:Admin <'。$ admin_email。'> \ r \ n', \t'To:Admin <'。$ admin_email。'> \ r \ n', \t'Bcc:'。$ user_name。'< '。$ user_email。'> \ r \ n' );' –