Ab und an muss man unverständliche Dinge neu lernen. Der Versuch direkte Kalendereinladungen per WordPress zu versenden, endet im Disaster. Aber warum?
mail() ist eine PHP Funktion die Mails verschickt. wp_mail() ist die WordPress Funktion. wp_mail kann es aber nicht, da es den Code nicht korrekt formatiert und daher die Mails entweder mit einer ICS Datei ankommen, oder der Mailserver diese nicht lesen kann. Mit mail() umzusetzen ist möglich, aber ist aufwändig und nutzt nicht die WordPress Möglichkeiten.
Daher habe ich ein Zwitter gemacht. Ich nutze eine eigene Funktion, greife aber auf das Mailversandgerüst von WordPress zurück.
<?php
function sendOutlookInvitation($participants, $subject, $desc, $start_time, $end_time, $location='') {
global $phpmailer;
if ( ! ( $phpmailer instanceof PHPMailer\PHPMailer\PHPMailer ) ) {
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
$phpmailer = new PHPMailer\PHPMailer\PHPMailer( true );
$phpmailer::$validator = static function ( $email ) {
return (bool) is_email( $email );
};
}
$phpmailer->addAddress($participants[0]);
foreach ($participants as $i => $attendee) {
if ($i >= 1) $phpmailer->addCC($attendee);
}
$phpmailer->WordWrap = 50;
$phpmailer->isHTML(true);
$urlparts = parse_url(site_url());
$organizer = $urlparts['host'];
$text = "BEGIN:VCALENDAR\r\n".
"VERSION:2.0\r\n".
"PRODID:-//wukch-calender//mailer/NONSGML v1.0//EN\r\n".
"METHOD:REQUEST\r\n".
"BEGIN:VEVENT\r\n".
"UID:" . md5(uniqid(mt_rand(), true)) . "wuk.ch\r\n".
"DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z\r\n".
"DTSTART:" . date('Ymd\THis', $start_time) . "Z\r\n".
"DTEND:" . date('Ymd\THis', $end_time) . "Z\r\n".
"SUMMARY:".$subject."\r\n".
"ORGANIZER;CN=".$participants[0].":mailto:website@".$participants[0]."\r\n".
"LOCATION:".$location."\r\n".
"DESCRIPTION:".$desc."\r\n";
foreach ($participants as $i => $attendee) {
$text .= "ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN".$attendee.";X-NUM-GUESTS=0:MAILTO:".$attendee."\r\n";
}
$text .= "END:VEVENT\r\n".
"END:VCALENDAR\r\n";
$headers = "From: ".$participants[0]."\n";
$headers = "Reply-To: ".$participants[0]."\n";
$headers .= 'Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n';
$headers .= "Content-Type: text/plain;charset=\"utf-8\"\r\n";
$phpmailer->Subject = $subject;
$phpmailer->Body = $desc;
$phpmailer->AltBody = $text;
$phpmailer->Ical = $text;
if(!$phpmailer->send()) { return false; }
return true;
}
Ich habe die Funktion gebaut, dass mir Kunden eine Einladung zusenden können an freien Terminen. Sich selbst muss man natürlich auch einladen. Die erste Mailadresse die angegeben wird, wird automatisch als Organisator verwendet:
<?php
$participants = array('test@test.ch','kunde@domain.de');
$subject = 'Betreff der Mail';
$desc = "Beschreibung der Mail";
$start_time = gmttime(); // GMT Zeit des Start
$end_time = gmttime() // GMT Zeit Ende
$location = 'Zoom oder vor Ort'
sendOutlookInvitation($participants, $subject, $desc, $start_time, $end_time, $location='');
Viel Spass damit.
Kalendereinladung mit WordPress verschicken
Ab und an muss man unverständliche Dinge neu lernen. Der Versuch direkte Kalendereinladungen per WordPress zu versenden, endet im Disaster. Aber warum?
mail() ist eine PHP Funktion die Mails verschickt. wp_mail() ist die WordPress Funktion. wp_mail kann es aber nicht, da es den Code nicht korrekt formatiert und daher die Mails entweder mit einer ICS Datei ankommen, oder der Mailserver diese nicht lesen kann. Mit mail() umzusetzen ist möglich, aber ist aufwändig und nutzt nicht die WordPress Möglichkeiten.
Daher habe ich ein Zwitter gemacht. Ich nutze eine eigene Funktion, greife aber auf das Mailversandgerüst von WordPress zurück.
Ich habe die Funktion gebaut, dass mir Kunden eine Einladung zusenden können an freien Terminen. Sich selbst muss man natürlich auch einladen. Die erste Mailadresse die angegeben wird, wird automatisch als Organisator verwendet:
Viel Spass damit.
Lazy Load Bilder von WordPress
Mit dem folgenden Code, werden alle Bilder auf Lazy Load bei WordPress umgestellt.
Bestellung auf Rechnung automatisch weiterverarbeiten (WooCommerce)
Bestellungen auf Rechnung bleiben normal immer auf “on hold” hängen. Damit diese automatisch “Processing” erhalten, muss folgender Code im Childtheme oder Plugin platziert werden:
Dieser Code setzt alle Bestellungen automatisch auf processing. Wenn man will, kann man auch prüfen ob die Bestellung per “bacs” gemacht wurde (Rechnung).
Hooks debuggen
Autoresponder per Code abschalten (Enfold)
Visueller Editor von Enfold bei Custom Post Types aktivieren
Enfold Formular Conversion Tracking
Beispiel für Google Ads:
Beispiel für Linkedin:
Absender E-Mailadresse anpassen
Local Google Fonts (Elementor)
Schriften werden anschliessend nicht mehr von gfonts geladen.
Schriften müssen danach weiterhin lokal über das CSS geladen werden und muss manuell eingebaut werden!
Site Health Checks deaktivieren