0

新しい投稿を公開した後にユーザーにメールを送信する関数を作成しようとしています。これが私がこれまでに持っているものです:

require_once('db.php');

$sql="SELECT email FROM table";

$result = sqlsrv_query($sqlsrvconnection, $sql);

$emailList="";

while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
    $emailList.=", ".$row['email'];
}

add_action('save_post', 'email_members');

function email_members( $post_id, $emailList )  {

    if ( !wp_is_post_revision( $post_id ) ) {

        $to      = 'example@test.com';
        $subject = 'the subject';
        $message = "email list consists of: ".$emailList;
        $headers = 'From: webmaster@example.com' . "\r\n" .
            'Reply-To: webmaster@example.com' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

        mail($to, $subject, $message, $headers);

}

}

関数で $emailList 変数を渡そうとしましたが、何もできません。私はそれを間違って渡していますか?別の wp アクションにフックする場合、これは許可されませんか?

4

1 に答える 1

0

関数が別の場所で呼び出されていることがわかりました (save_post アクションを使用)。このため、関数は $emailList 変数にアクセスできませんでした。すべて (add_action() を除く) を関数内に移動したところ、すべてうまくいきました。

add_action('save_post', 'email_members');

function email_members( $post_id, $emailList )  {

    require_once('db.php');

    $sql ="SELECT email FROM table";

    $result = sqlsrv_query($sqlsrvconnection, $sql);

    $emailList="";

    while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
        $emailList.=", ".$row['email'];
    }

    if ( !wp_is_post_revision( $post_id ) ) {

        $to      = 'example@test.com';
        $subject = 'the subject';
        $message = "email list consists of: ".$emailList;
        $headers = 'From: webmaster@example.com' . "\r\n" .
            'Reply-To: webmaster@example.com' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

        mail($to, $subject, $message, $headers);

    }

}
于 2013-04-01T17:51:47.940 に答える