Jörgs Webnotizen

WordPress: Hinweis auf Freischaltung von Kommentaren ohne Cookie

Vor zwei Jahren hatte ich festgestellt, dass WordPress einen Hinweis auf Freischaltung von Kommentaren nur dann anzeigt, wenn User beim Kommentieren eine E-Mail-Adresse angeben, die in einem Cookie gespeichert wird. Da ich im Zuge der DSGVO dieses Blog so angepasst habe, dass es weder Cookies speichert, noch im Kommentarformular eine E-Mail-Adresse abfragt, lasse ich nun einen Hinweis per JavaScript anzeigen.

In der comments.php habe ich hierzu oberhalb der freigeschalteten Kommentare einen leeren Absatz mit der ID „comment-unapproved“ stehen, der in der CSS-Datei mittels „display: none“ ausgeblendet ist:


<div id="comments">
<?php if ($comments) : ?>
    <h2>Kommentare</h2>
    <p id="comment-unapproved"></p>
    <?php foreach ($comments as $comment) : ?>
        <!-- ... -->
    <?php endforeach; ?>
<?php endif; ?>
</div>

#comment-unapproved {
  display: none;
  font-weight: bold;
  color: #933;
}

Die Weiterleitungs-URL nach Absenden eines Kommentars verweist im Anker auf die ID comment-{comment_ID}. Ist diese ID auf der Seite nicht vorhanden (da der Kommentar noch nicht freigeschaltet ist), dann fügt das folgende JavaScript den Hinweis in den leeren Absatz, blendet diesen mittels „display: block“ ein und ändert den Anker in der URL in „#comments“:


document.addEventListener("DOMContentLoaded", function() {
  if (window.location.hash) {
    var hash = window.location.hash;
    if (hash.substr(0, 9) == '#comment-' && ! document.getElementById(hash.substr(1))) {
      var notice = document.getElementById('comment-unapproved');
      notice.style.display = 'block';
      notice.textContent = 'Achtung: dein Kommentar muss erst noch freigegeben werden.';
      window.location.hash = '#comments';
    }
  }
});

Mit den Browsern, mit denen ich dies getestet habe (Firefox, Chromium, IE 11), funktioniert das soweit. Der Hinweis wird (unpassenderweise) auch angezeigt, wenn man gar nicht von WordPress weitergeleitet wurde, sondern eine nicht vorhandene ID manuell an die URL anhängt, von daher ist diese Lösung etwas „quick & dirty“. Aber dafür werden (die meisten) User nicht im Ungewissen darüber gelassen, was mit ihrem Kommentar geschieht.

Kommentar schreiben

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Kommentare werden erst nach Freischaltung veröffentlicht