Mit dem überarbeiteten Snippet funktioniert es nun :smile:
Änderungen:
1. Cookie-Lebenszeit: Der "comment_cookie_lifetime"-Filter wird nun nicht mehr innerhalb einer if/else-Abfrage in Abhängigkeit der gesetzten Checkbox ausgeführt, sondern sitzt eigenständig ganz oben. Es wird damit ja noch kein Cookie gesetzt, sondern nur der Wert der Kommentar-Cookie-Lebenszeit. Außerdem befindet sich nun der Sekundenwert nicht mehr direkt in der Zeile (das habe ich nicht lauffähig bekommen), sondern in einer separaten Funktion darunter.
2. Checkbox bei gesetztem Cookie vor-ausgewählt: Hier musste ich nur die drei (oder testweise zwei) Gleichheitszeichen hinter "$sb_commentcookies_checked" durch ein einfaches ersetzen.
add_filter('comment_cookie_lifetime', 'sb_comment_cookie_lifetime');
function sb_comment_cookie_lifetime( $lifetime ) {
return 3600;
}
add_filter('comment_form_default_fields','sb_add_comment_fields');
function sb_add_comment_fields( $fields ) {
$sb_commentcookies_checked = '';
if( isset( $_COOKIE['sb_commentcookies_' . COOKIEHASH] ) ) {
$sb_commentcookies_checked = 'checked="checked" ';
}
$fields['sb_commentcookies'] = '<p class="sb_commentcookies">
<label for="sb_commentcookies">
<input type="checkbox" ' . $sb_commentcookies_checked . 'value="yes" id="sb_commentcookies" name="sb_commentcookies" />
Kommentar-Komfort-Cookies für 1 Stunde speichern.
</label></p>';
return $fields;
}
add_filter( 'preprocess_comment', 'sb_verify_commentcookies' );
function sb_verify_commentcookies( $commentdata ) {
if ( ! is_user_logged_in() ) {
$secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
if ( ! isset( $_POST['sb_commentcookies'] ) ) {
remove_action( 'set_comment_cookies', 'wp_set_comment_cookies' );
if( isset( $_COOKIE['comment_author_' . COOKIEHASH] ) ) {
unset( $_COOKIE['comment_author_' . COOKIEHASH] );
setcookie( 'comment_author_' . COOKIEHASH, '', time() - 60000, COOKIEPATH, COOKIE_DOMAIN, $secure );
}
if( isset( $_COOKIE['comment_author_email_' . COOKIEHASH] ) ) {
unset( $_COOKIE['comment_author_email_' . COOKIEHASH] );
setcookie( 'comment_author_email_' . COOKIEHASH, '', time() - 60000, COOKIEPATH, COOKIE_DOMAIN, $secure );
}
if( isset( $_COOKIE['comment_author_url_' . COOKIEHASH] ) ) {
unset( $_COOKIE['comment_author_url_' . COOKIEHASH] );
setcookie( 'comment_author_url_' . COOKIEHASH, '', time() - 60000, COOKIEPATH, COOKIE_DOMAIN, $secure );
}
if( isset( $_COOKIE['sb_commentcookies_' . COOKIEHASH] ) ) {
unset( $_COOKIE['sb_commentcookies_' . COOKIEHASH] );
setcookie( 'sb_commentcookies_' . COOKIEHASH, '', time() - 60000, COOKIEPATH, COOKIE_DOMAIN, $secure );
}
} else {
setcookie( 'sb_commentcookies_' . COOKIEHASH, 'yes', time() + 3600, COOKIEPATH, COOKIE_DOMAIN, $secure );
}
return $commentdata;
}
}
Alles anzeigen
Die Moderationsinfo für Cookie-deaktivierte Kommentare kann durch das Plugin "WP Ajaxify Comments" einfach umgesetzt werden.
Bleibt also im letzten Schritt nur noch die Kompatibilität mit dem Editier-Plugin, an die ich much noch begeben muss.