Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在PHP Foreach循环外部使用变量_Arrays_Wordpress_Email - Fatal编程技术网

Arrays 在PHP Foreach循环外部使用变量

Arrays 在PHP Foreach循环外部使用变量,arrays,wordpress,email,Arrays,Wordpress,Email,我试图在foreach循环之外输出用户名和用户电子邮件。我正在尝试向属于某个用户角色的所有WordPress用户发送电子邮件 这是我的密码: // Get users and their roles $user_args = array( 'role__in' => 'new_role', 'orderby' => 'user_nicename', 'order' => 'ASC' ); $users =

我试图在foreach循环之外输出用户名和用户电子邮件。我正在尝试向属于某个用户角色的所有WordPress用户发送电子邮件

这是我的密码:

// 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;
我已打印出$users数组,其中包含以下内容:

Array
(
    [0] => WP_User Object
        (
            [data] => stdClass Object
                (
                    [ID] => 46
                    [user_login] => huw
                    [user_pass] => u7CqxbuQDvApUAF6tT.
                    [user_nicename] => huw
                    [user_email] => huw@xxxx.co.uk
                    [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] => jeremy@gmail.com
                    [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] => 
        )

)

如果要向具有特定角色的所有用户发送电子邮件,请尝试以下操作:

// 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
}

我不明白你想做什么。如果要在foreach循环中保存“user\u name”和“user\u email”,只需每次覆盖变量,直到最后一次迭代。看起来你只需要一个用户,对吗?谢谢@Chris的帮助。我现在修改了我的代码,包括:
foreach($users as$user):$user\u name=$user->user\u email;$user\u email=$user->display\u name;发送电子邮件($user\u name,$user\u email);endforeach
然后创建了一个包含所需电子邮件内容的函数:
函数send_email($user_name,$user_email){//Body content在这里……wp_email($admin_email,$subject,$Body,$headers);}
但我没有收到任何电子邮件。@HuwRowlands,
$admin_email
来自哪里?应该改为
$user\u email
?(另外,我假设
$subject
$body
$headers
在使用前已定义,对吗?对不起。我已更新了我的函数调用,以包含一些其他变量:
函数发送电子邮件($user\u name、$user\u email、$admin\u email、$post\u id、$cat\u list){
这些是预定义的。
$admin\u email
用于向网站管理员发送电子邮件。
$headers=array('From:admin\r\n','to:admin\r\n','Bcc:'.$user\u name.\r\n');
@HuwRowlands我不太熟悉
wp\u mail()
函数,但我建议将所有这些变量打印到每个循环的屏幕上,以便您可以验证变量是否正确设置简化我的代码,$user\u name和$user\u电子邮件变量输出不正确。$user\u name输出电子邮件地址,$user\u电子邮件输出名称?!这种情况仅在外部发生调用函数时的foreach循环。