3 Stimmen

PHP ersetzt Token in HTML-E-Mail-Variable vor dem Senden

Ich habe eine E-Mail, die ich an die Abonnenten meiner Website verschicke. Ich tue dies, indem ich die Abonnentenliste aus meiner Datenbank abrufe und das Array in einer Schleife durchlaufe und eine E-Mail nach der anderen versende... Ich weiß, dass es eine Möglichkeit gibt, alle auf einmal zu senden, aber das ist der Grund, warum ich es auf diese Weise tue und der Teil, bei dem ich Hilfe brauche...

Die HTML-E-Mail enthält 2 Token:

{name} y {date}

Was ich tun muss, ist, das Datum in die HTML-E-Mail einzufügen, indem ich die {date} Token und fügen den Namen anstelle des {name} für jede gesendete E-Mail (da der Name immer anders ist).

Das habe ich:

        $result = $wpdb->get_results( "SELECT * FROM wp_newsletter WHERE `id` IN ( $userIds )");
        for($i = 0, $size = sizeof($result); $i < $size; ++$i){
          add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
          $to .= $result[$i]->name.'<'.$result[$i]->email.'>';
          $mail = wp_mail( $to, $subject , $message, $headers);
        }

wie Sie oben sehen können, habe ich zwei Variablen aus der Datenbank:

$result[$i]->name

$result[$i]->email

y $message ist der HTML-E-Mail-Text, der die 2 Token enthält, die ersetzt werden müssen.

so.... alles funktioniert wie erwartet für die Schleifen und Senden ich brauche nur etwas Hilfe mit, wie ich das Token ersetzen für tun {name} y {date} .

Für jede Hilfe wäre ich sehr dankbar.

2voto

Madbreaks Punkte 18019

Dies lässt sich leicht mit PHPs str_replace Funktion, Dokumente hier .

...
$message = str_replace('{name}', $result[$i]->name, $message);
$message = str_replace('{date}', date('Y/m/d H:i:s'), $message);  // Or your preferred date format

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

Beachten Sie, dass wenn Sie wissen, dass es nur eine einzige Instanz von {name} und/oder {date} können Sie einen 4. Parameter übergeben $count a str_replace und es wird nach dem Ersetzen des ersten Streichholzes beendet.

Saludos

1voto

silentw Punkte 4737
$message = str_replace('{name}',$result[$i]->name,$message);
$message = str_replace('{date}',date('Y/m/d H:i:s'),$message);

str_replace('{name}',$result[$i]->name);
str_replace('{date}',date('Y/m/d H:i:s'));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X