0

我正在尝试检索我使用此插件设置的 Wordpress 用户组列表,并让用户能够使用此插件单独向每个组发送电子邮件。这基本上复制了一个列表服务。

在安装这两个插件并设置组列表后,电子邮件插件显示的是 Wordpress 角色,即编辑/订阅者等,而不是我的自定义组。所以,我打开了发送群发邮件的表格,这是原来的主干

现在从第 97 行修改到第 119 行后,我得到了这样的结果:

<select id="send_roles" name="send_roles[]" multiple="multiple"
        size="8" style="width: 654px; height: 250px;">
            <?php
                $roles = mailusers_get_roles($user_ID, MAILUSERS_ACCEPT_MASS_EMAIL_USER_META);
                foreach ($roles as $key => $value) {
            ?>


<?php
$data = mysql_query("SELECT * FROM wp_groups_group") 
or die(mysql_error()); 
while($info = mysql_fetch_array( $data )) 
{ ?>
<option value="<?php echo $key; ?>" <?php
                    echo (in_array($key, $send_roles) ? ' selected="yes"' : '');?>>
                    <?php
                        printf('%s - %s', __('Group', MAILUSERS_I18N_DOMAIN), $info['name']);
 } 
 ?>
        </option>
            <?php
                }
            ?>
</select>

这很棒,它显示了电子邮件表单。现在有了我的用户组列表,唯一的问题是,无论我选择哪个电子邮件组,它总是将电子邮件发送给所有组中的所有用户。提交表单后,组显示为全部被选中,而不仅仅是我选择的组。

如果有人可以提供帮助,我将不胜感激!

我在 Wordpress 3.5 上。

4

1 回答 1

1

这是一个精简的(非 Wordpress)HTML 演示,可帮助您揭示代码的问题:

<html>
<body>

    <?php if ($_POST): ?>
        <?php print_r($_POST); ?>
    <?php endif; ?>

    <form method="post">

        <select id="send_roles"
                name="send_roles[]"
                multiple="multiple"
                size="8"
                style="width: 654px; height: 250px;"
        >
            <option value="registered">Group - Registered</option>
            <option value="mens">Group - Mens group</option>
            <option value="monday">Group - Monday night</option>
            <option value="tueday">Group - Tuesday Night</option>
            <option value="unaffiliated">Group - Unaffiliated</option>
            <option value="alumni">Group - Alumni</option>
        </select>

        <input type="submit" value="Submit" />

    </form>
</body>
</html>

您有两个问题(在示例中均已解决):

  • 您的选项值都相同,这些需要不同
  • 每个选项值都没有关闭,除了最后一个

因此,看起来来自的值mailusers_get_roles()有问题 - 不要让它们中的每一个都成为“订阅者”。此外,将to 移到</option>前面的大括号之前,根据需要打开/关闭 PHP 标记。

于 2013-01-09T20:43:48.413 回答