Lesefortschritt:

    Zuletzt gelesene Beiträge als Widget in der Seitenliste anzeigen

    17. Juni 2026 | functions.php, Word­Press

    Trick # 583 | Dieser Beitrag beinhaltet 748 Wörter. – Geschätzte Lesezeit: ca. 4 Minuten.

    Besonders wenn Ihre Website häufig für Recherchen genutzt wird, kann eine Liste der zuletzt aufgerufenen Beiträge für User hilfreich sein. Ein solches Widget, welches Sie in der Seitenleiste Ihrer Word­Press-Website anzeigen können, bauen wir heute. Es listet die fünf zuletzt gelesenen Beiträge Ihrer BesicherInnen auf.

    Das Widget erstellen Sie mit PHP-Code. Den folgenden Block fügen Sie Ihrer Datei functions.php hinzu – im Backend unter Design/Theme-Datei-Editor:

    // Letztgelesene Beiträge im Widget anzeigen
    // Beiträge beim Lesen speichern
    function track_user_post_view($post_id) {
    if (is_single()) {
    // Für eingeloggte Benutzer
    if (is_user_logged_in()) {
    $user_id = get_current_user_id();
    $recent_posts = get_user_meta($user_id, 'recently_viewed_posts', true);if (!$recent_posts) {
    $recent_posts = [];
    }// Speichere den aktuellen Beitrag mit Timestamp
    $recent_posts[] = [
    'post_id' => $post_id,
    'viewed_at' => current_time('mysql'),
    ];// Halte die Liste auf maximal 5 Einträge beschränkt
    $recent_posts = array_slice($recent_posts, -5);update_user_meta($user_id, 'recently_viewed_posts', $recent_posts);
    } else {
    // Für nicht eingeloggte Benutzer: Cookie verwenden
    $recent_posts = isset($_COOKIE['recently_viewed_posts']) ? json_decode(stripslashes($_COOKIE['recently_viewed_posts']), true) : [];if (!$recent_posts) {
    $recent_posts = [];
    }// Speichere den aktuellen Beitrag mit Timestamp
    $recent_posts[] = [
    'post_id' => $post_id,
    'viewed_at' => current_time('mysql'),
    ];// Halte die Liste auf maximal 5 Einträge beschränkt
    $recent_posts = array_slice($recent_posts, -5);// Speichere die Liste als Cookie
    setcookie('recently_viewed_posts', json_encode($recent_posts), time() + (86400 * 30), '/'); // 30 Tage Gültigkeit
    }
    }
    }
    add_action('wp', function () {
    if (is_single()) {
    global $post;
    if ($post) {
    track_user_post_view($post->ID);
    }
    }
    });// Widget-Klasse für die Seitenleiste
    class RecentPostsWidget extends WP_Widget {
    public function __construct() {
    parent::__construct(
    'recent_posts_widget',
    'Zuletzt gelesene Beiträge',
    ['description' => 'Zeigt die 5 zuletzt gelesenen Beiträge des Benutzers an.']
    );
    }public function widget($args, $instance) {
    echo $args['before_widget'];
    echo $args['before_title'] . 'Zuletzt gelesen' . $args['after_title'];$recent_posts = [];if (is_user_logged_in()) {
    // Für eingeloggte Benutzer
    $user_id = get_current_user_id();
    $recent_posts = get_user_meta($user_id, 'recently_viewed_posts', true);
    } else {
    // Für nicht eingeloggte Benutzer: Cookie verwenden
    if (isset($_COOKIE['recently_viewed_posts'])) {
    $recent_posts = json_decode(stripslashes($_COOKIE['recently_viewed_posts']), true);
    }
    }if (!empty($recent_posts)) {
    echo '<ul>';
    foreach (array_reverse($recent_posts) as $post_info) {
    $post = get_post($post_info['post_id']);
    if ($post) {
    $post_title = esc_html(get_the_title($post));
    $post_url = esc_url(get_permalink($post));
    $viewed_at = date_i18n('d.m.Y H:i', strtotime($post_info['viewed_at']));
    echo "<li><a href='{$post_url}'>{$post_title}</a> <br><small>am {$viewed_at}</small></li>";
    }
    }
    echo '</ul>';
    } else {
    echo '<p>Noch keine Beiträge gelesen.</p>';
    }echo $args['after_widget'];
    }
    }// Widget registrieren
    function register_recent_posts_widget() {
    register_widget('RecentPostsWidget');
    }
    add_action('widgets_init', 'register_recent_posts_widget');

    Das war’s schon.

    Wenn Sie nun im Backend (unter Design/Widgets) Ihrer Seitenleiste das neue Widget «Zuletzt gelesene Beiträge» hinzufügen, werden die zuletzt gelesenen Beiträge an ebendieser Stelle angezeigt.

    Werbung

    Keine Inhalte gefunden.

    Werbung

     

    Pin It on Pinterest

    Share This
    Überblick über den Datenschutz

    Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.