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>

2 つの問題があります (例では両方とも修正されています)。

  • オプション値はすべて同じです。これらは異なる必要があります
  • 最後のオプションを除いて、各オプション値は閉じられていません

したがって、からの値に問題があるようmailusers_get_roles()です。それぞれを「サブスクライバー」にしないでください。また、</option>前の中括弧の前に to を移動し、必要に応じて PHP タグを開いたり閉じたりします。

于 2013-01-09T20:43:48.413 に答える