=
34.236.245.255

Daschmi's Notizblog

Logo des Etikators - Tool um online drucken von Etiketten für selbst angefertigte Tinkturen

WordPress und Sessions und „Zustand der Website“

Erstellt in PHP, Wordpress am 10. September 2020

Wer mit Sessions unter WordPress arbeiten muss und bisher die Session einfach im init Hook mit session_start() geöffnet hat erhält seit WordPress 5.5. folgende Meldung im Check „Zustand der Website“

Gelöst habe ich das Problem bei mir, indem ich die Session im init Hook einmal öffne und wieder schließe. Später öffne ich sie im send_headers Hook wieder und lasse sie offen damit ich nach dem Senden des Headers noch damit arbeiten kann.

function st_init() {

    if (!session_id()) { 
        
        // Ich öffne die Sesion kurz, damit ich den $_SESSION Array verwenden kann
        // Schließe sie aber dann wieder

        session_start(); 
        //session_write_close();

    }

}

function st_send_headers() {

    // Hier öffne ich die Session wieder, damit ich mit dem $_SESSION Array wieder arbeiten kann

    $ses = $_SESSION;

    session_start();

    $_SESSION = $ses;

}

add_action('init', 'st_init', 1);
add_action('send_headers', 'st_send_headers');

Unspezifische Fehler mit ContactForm7 und dem PHPMailer anzeigen

Erstellt in Sonstiges am 14. August 2020

Wenn man in einem ContactForm7 Formular die Fehlermeldeung

„Beim Versuch, Ihre Mitteilung zu versenden, ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.“

erhält ist das recht unspezifisch. Mit folgender Action kann man den Fehler weiter eingrenzen.

function my_wpcf7_ajax_json_echo($items, $result) {

	if ($result['status'] === 'mail_failed') {

		global $phpmailer;

		$items['errorInfo'] = $phpmailer->ErrorInfo;

	}

	return $items;

}

add_action('wpcf7_ajax_json_echo', 'my_wpcf7_ajax_json_echo', 10, 2);

In der JavaScript Konsole sieht man dann den Fehler z.B. so

Hier hat übrigens ein Update auf WordPress 5.5. geholfen.

Mit php einen Array in x Teile teilen

Erstellt in Sonstiges am 30. Juni 2020

Mit array_chunk kann man einen Array teilen und dabei die Größe der Teile angeben. Bei kleineren Arrays kann man die benötigte Größe der Teile mit floor ermitteln. Hat man aber einen Array mit vielen Elementen so kann man folgende Funktion benutzen.

function part(array $ar, int $pices) {

    $size = sizeof($ar);

    $chunk_size = floor($size / $pices);
    $pr = $size % $pices;

    $r = []; $k = 0;

    for ($i = 0; $i < $pices; $i ++) {

        $j = ($i < $pr)?$chunk_size + 1:$chunk_size;
        $r[$i] = array_slice($ar, $k, $j);

        $k += intval($j);

    }

    return $r;

}

var_dump(part([1,2,3,4,5,6,7,8], 2);

Neue Bibliothek zur datenschutzkonformen Verwendung von Open Streetmap

Erstellt in Sonstiges am 15. Mai 2020

Für die Verwendung von OpenStreetMap nach der DSGVO habe ich eine kleine Bibliothek entwickelt. Diese bindet die Karte erst nach erfolgtem Opt-In ein.

Eine Beispielanwendung finden Sie hier und die Bibliothek selbst finden Sie hier.

Mit TYPO3 und VHS überprüfen ob eine Seite unter einer anderen Seite liegt

Erstellt in Sonstiges am 12. Mai 2020

Mit folgendem Fluid Tempalate Code kann man mittels VHS überprüfen ob eine Seite unter einer anderen Seite liegt.

<f:variable name="rootline" value="{v:page.rootline() -> v:iterator.extract(key: 'uid')}" />
<f:variable name="in_rootline" value="{v:condition.iterator.contains(needle:'3', haystack: rootline, then:'1', else:'0')}" />

Mittels

<f:debug>{rootline}</code>
<f:debug>{in_rootline}</code>

Kann man dies in <f:if> etc. verwenden. in_rootline wird 1 wenn die Seite enthalten ist und 0 wenn die Seite nicht enthalten ist.