(Der Artikel wurde der Bequemlichkeit halber aufgeteilt.)
Das war der schwierigste Teil...
Zunächst einmal war es etwas schwierig, weil ich zum ersten Mal richtig mit Cookies gearbeitet habe. Der Unterschied zwischen der Handhabung von Cookies in PHP und JavaScript. Außerdem, obwohl ich es erst bemerkt habe, nachdem es mir gesagt wurde, kann man, da PHP serverseitig ist, kein Cookie in PHP setzen, während HTML gerendert wird. Ich bin vorhin auf diesen Fehler gestoßen und habe ihn selbst behoben... obwohl ich die Fehlermeldung vergessen habe.
Also müssen Cookies in functions.php statt in header.php definiert werden.
In diesem Fall müssen wir jedoch überprüfen, ob der Beitrag zu einer bestimmten Kategorie gehört mit is_single() && in_category(array('pink'), also reagiert es umgekehrt nicht, wenn wir es in functions.php schreiben.
Die Schlussfolgerung, zu der ich gekommen bin, war also, das Cookie mit JavaScript zu manipulieren, nachdem es geladen wurde.
Nun, ich habe es zum Laufen gebracht.

<br />if (is_single() && in_category(array('black'))) {
// echo '1';
$cookie_name = "_yuisBlackSessionHistory" ;
$cookie_value = "true" ;
if(!isset($_COOKIE[$cookie_name])) {
echo "<script type='text/javascript'> document.cookie = \"_yuisBlackSessionHistory=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/; domain=yuis.org; ; \"; </script>" ;
// echo '<script type="text/javascript"> alert("この記事には不快要素が含まれています。気分を害する恐れがありますことをご了承の上ご閲覧ください。") </script>' ;
// or
echo '<script type="text/javascript">
alertify.confirm(\'Warnung\', \'Dieser Artikel enthält möglicherweise anstößige Inhalte. Bitte beachten Sie, dass er verstörend sein kann.\', function(){
alertify.success(\'Zur Kenntnis genommen.\')
} , function(){
// alertify.error(\'Cancel\')
window.location = document.referrer ;
});
</script>' ;
} else {
}
}
Was es tut: Bei Beiträgen in der black-Kategorie wird, wenn das Cookie "_yuisBlackSessionHistory" nicht definiert ist, JavaScript eingebettet, um _yuisBlackSessionHistory zu definieren. Dadurch kann eine Aktion nur beim ersten Zugriff durchgeführt werden. Als diese Aktion wird ein Popup angezeigt, das dem Benutzer die Wahl zwischen Ja/Nein lässt, und bei Ja wird fortgefahren. Bei Nein kehrt es zur vorherigen Seite zurück.
Was das entscheidende Verhalten betrifft, dachte ich, alert() könnte in Ordnung sein, aber nein, das funktioniert nicht. Es wird von Popup-Blockern blockiert. Es ist nutzlos. Daher verwende ich eine JavaScript-Bibliothek namens alertify.
Mit alertify können Sie die Operationen, die Sie ausführen möchten, wenn Ja/Nein ausgewählt wird, einfach verzweigen.
alertify-Bibliothek. Zum Header hinzufügen.
<script src="//cdn.jsdelivr.net/npm/[email protected]/build/alertify.min.js"></script>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/[email protected]/build/css/alertify.min.css"/>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/[email protected]/build/css/themes/default.min.css"/>