WordPress: add_action() に変数を渡す


LOTDの配信メールをテキストとHTMLの両方を含むマルチパートにするために検索したところ、 phpmailer_init というアクションフックが見つかった。

do_action_ref_array( 'phpmailer_init', PHPMailer $phpmailer )

$phpmailer のAltBody メンバーにテキストをセットすればよいらしい。$phpmailer は参照渡しされるので、返り値を送れないアクションフックでもセットできる。

ただ、アクションは外からの変数を受け取れない。

$text_body = (組み立てたテキスト)
add_action( 'phpmailer_init', 'lf_altbody', 10, 1 );
function lf_altbody( $phpmailer ) {
    // $text_body をどうやって受け取る?
}

これは次のようにアクションを無名関数とすることで渡せることがわかった。

$text_body = (組み立てたテキスト)
add_action( 'phpmailer_init', function( $phpmailer ) use( $text_body ) {
    $phpmailer->AltBody = $text_body;
}, 10, 1 );

Posted by

on

in category