WordPress – Trackbacks und Kommentare nach einem Zeitabschnitt automatisch sperren

Robert sucht ein Plugin, dass nach einem gewissen Zeitintervall die Funktion der Trackbacks/Pingbacks deaktiviert.

gibt es ein WordPress-Plugin, das explizit Trackbacks auf Artikel die älter als X Tage sind unterbindet, also keine Moderation, gleich abweisen?

Eine schnelle und schöne Lösung stelle ich hier mal vor, wurde auch getestet und läuft bis unter WordPress 2.1.2 . Dazu habe ich einfach das Plugin Auto-Close Comments erweitert, denn eigentlich ändert sich nur ein Feld in der SQL-Abfrage. Das Plugin ist nun so aufgebaut, dass Kommentare und Trackbacks nach einem gewissen Zeitraum deaktiviert werden - jeweils Variable $day.


<?php
/*
Plugin Name: Auto-Close Comments/ Trackbacks
Version:     0.3
Plugin URI:  http://codex.wordpress.org/Plugins/Auto_shutoff_comments
Description: Autoclose comments and trackbacks after 21 days.
Author:      Scott Hanson
Author URI:  http://www.papascott.de/
*/

/* Add an index on comment_status/ping_status to wp_posts to speed this up. */
/* Little Modifikation by Frank Bueltge - https://bueltge.de */

function autoclose_comments() {
    global $wpdb, $tableposts;

    if (!isset($tableposts))
        $tableposts = $wpdb->posts;

    // Set $age to the age at which a post should become stale
    $age = '21 DAY';

    $date = $wpdb->get_var("
        SELECT DATE_ADD(DATE_SUB(CURDATE(), INTERVAL $age), INTERVAL 1 DAY)
    ");

    $wpdb->query("
        UPDATE $tableposts
        SET comment_status = 'closed'
        WHERE comment_status = 'open'
        AND post_status = 'publish'
        AND post_date < '$date'
    ");
}

function autoclose_trackback() {
    global $wpdb, $tableposts;

    if (!isset($tableposts))
        $tableposts = $wpdb->posts;

    // Set $age to the age at which a post should become stale
    $age = '21 DAY';

    $date = $wpdb->get_var("
        SELECT DATE_ADD(DATE_SUB(CURDATE(), INTERVAL $age), INTERVAL 1 DAY)
    ");

    $wpdb->query("
        UPDATE $tableposts
        SET ping_status = 'closed'
        WHERE comment_status = 'open'
        AND post_status = 'publish'
        AND post_date < '$date'
    ");
}

add_action('publish_post',   'autoclose_trackback', 7);
add_action('edit_post',      'autoclose_trackback', 7);
add_action('delete_post',    'autoclose_trackback', 7);
add_action('comment_post',   'autoclose_trackback', 7);
add_action('trackback_post', 'autoclose_trackback', 7);
add_action('pingback_post',  'autoclose_trackback', 7);
add_action('edit_comment',   'autoclose_trackback', 7);
add_action('delete_comment', 'autoclose_trackback', 7);
add_action('template_save',  'autoclose_trackback', 7);

add_action('publish_post',   'autoclose_comments', 7);
add_action('edit_post',      'autoclose_comments', 7);
add_action('delete_post',    'autoclose_comments', 7);
add_action('comment_post',   'autoclose_comments', 7);
add_action('trackback_post', 'autoclose_comments', 7);
add_action('pingback_post',  'autoclose_comments', 7);
add_action('edit_comment',   'autoclose_comments', 7);
add_action('delete_comment', 'autoclose_comments', 7);
add_action('template_save',  'autoclose_comments', 7);
?>

Download:



Ist die Arbeit nicht 1 Euro wert?
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.
Möchtest du mehr oder anders spenden, so besuche meine Wunschliste.

Download als zip-Datei: timeout.zip - 1 KByte

5 Kommentare

  1. Nein, dazu müsste man eine Seite hinterlegen, wo man dies machen kann, bevor man das Plugin deaktiviert. Der hok, mit dem man deaktivieren kann ist nicht so zuverlässig. Derzeit muss man in der DB arbeiten.

  2. Hm, vor einer Weile war das mal richtig schlimm mit SPAM. Ich habe daraufhin mehrere Plugins drauf angesetzt, neben "Math Comment Spam Protection" auch das hier beschriebene. Alle Einträge werden nach einer Weile zuverlässig abgedichtet. Hab zur Zeit keinen Ärger mehr mit SPAM. Daher bin ich inzwischen wieder der Meinung, die Einträge auf zu halten. Allerdings habe ich keine Lust, sämtliche Einträge einzeln in der Administration zur Diskussion zu öffnen. Das müßte sich doch eigentlich auch mit diesem Plugin wieder rückgängig machen lassen. Also Laie stelle ich mir das einfach vor. Brauche doch bloß die Befehle "open" und "closed" im Code entsprechend tauschen
    oder?

  3. @ Thomas: Ich habe das mal direkt in phpMyAdmin gemacht:
    UPDATE `wp_posts` SET `comment_status` = 'open', `ping_status` = 'open';
    Damit gebe ich Kommentare, Track- und Pingbacks für alle Beiträge wieder frei.

    Gruß,
    Markus

Kommentare sind geschlossen.