Zum Inhalt springen
Startseite » WP Snippets » Ähnlicher Beitrag der letzten Monate in der Mitte anzeigen

Ähnlicher Beitrag der letzten Monate in der Mitte anzeigen

Um ähnliche Beiträge der letzten 12 Monate automatisch in der Mitte eines Beitrags anzuzeigen, ohne einen Shortcode zu verwenden, kannst du eine benutzerdefinierte Funktion in deinem WordPress-Theme hinzufügen. Diese Funktion fügt die ähnlichen Beiträge direkt in den Inhalt des Beitrags ein, ohne dass ein Shortcode benötigt wird.

Hier ist eine Möglichkeit, das zu tun:

Vorgehen:

  1. Füge die Funktion in deine functions.php-Datei ein:
function insert_similar_posts_in_middle($content) {
    if (!is_single()) {
        return $content; // Nur in Einzelbeiträgen ausführen
    }

    global $post;

    // Aktuelles Datum
    $today = date('Y-m-d');
    // Datum vor 12 Monaten
    $one_year_ago = date('Y-m-d', strtotime('-12 months'));

    // Hole die Kategorien oder Tags des aktuellen Beitrags
    $categories = wp_get_post_categories($post->ID);
    $tags = wp_get_post_tags($post->ID);

    // Erstelle WP_Query um ähnliche Beiträge zu finden
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 5, // Anzahl der ähnlichen Beiträge
        'post__not_in' => array($post->ID), // Aktuellen Beitrag ausschließen
        'orderby' => 'date',
        'order' => 'DESC',
        'date_query' => array(
            array(
                'after' => $one_year_ago, // Beiträge der letzten 12 Monate
                'before' => $today,
                'inclusive' => true,
            ),
        ),
        'category__in' => $categories, // Suche nach ähnlichen Kategorien
        'tag__in' => wp_list_pluck($tags, 'term_id'), // Oder nach Tags
    );

    $query = new WP_Query($args);

    // Überprüfe, ob ähnliche Beiträge gefunden wurden
    if ($query->have_posts()) {
        $similar_posts = '<div class="similar-posts"><h3>Ähnliche Beiträge der letzten 12 Monate</h3><ul>';
        while ($query->have_posts()) {
            $query->the_post();
            $similar_posts .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
        }
        $similar_posts .= '</ul></div>';
    } else {
        $similar_posts = '<p>Es wurden keine ähnlichen Beiträge der letzten 12 Monate gefunden.</p>';
    }

    // Ursprünglichen Beitrag wiederherstellen
    wp_reset_postdata();

    // Inhalt in zwei Hälften teilen, um die ähnlichen Beiträge in der Mitte anzuzeigen
    $content_parts = explode('</p>', $content);
    $middle = round(count($content_parts) / 2);

    // Füge die ähnlichen Beiträge in der Mitte des Inhalts ein
    $new_content = '';
    for ($i = 0; $i < count($content_parts); $i++) {
        $new_content .= $content_parts[$i] . '</p>';
        if ($i == $middle) {
            $new_content .= $similar_posts; // Ähnliche Beiträge in der Mitte einfügen
        }
    }

    return $new_content;
}

// Filter anwenden, um die Funktion beim Einzelbeitrag aufzurufen
add_filter('the_content', 'insert_similar_posts_in_middle');

Erklärung:

  • insert_similar_posts_in_middle(): Diese Funktion wird aufgerufen, wenn der Inhalt eines Einzelbeitrags (is_single()) angezeigt wird.
  • Ähnliche Beiträge: Die Funktion erstellt eine WP_Query, um Beiträge zu finden, die in den letzten 12 Monaten veröffentlicht wurden und ähnliche Kategorien oder Tags wie der aktuelle Beitrag haben.
  • Inhaltsaufteilung: Der Inhalt des Beitrags wird in zwei Hälften geteilt, indem der Text nach jedem </p> (Ende eines Absatzes) getrennt wird. Die ähnlichen Beiträge werden in der Mitte des Textes eingefügt.
  • Filter: Der Filter the_content wird verwendet, um den Inhalt des Beitrags zu ändern und die ähnlichen Beiträge an der gewünschten Stelle einzufügen.

Verwendung:

  • Du musst nichts weiter tun, nachdem du diesen Code hinzugefügt hast. Die ähnlichen Beiträge werden automatisch in der Mitte jedes Einzelbeitrags angezeigt.
  • Du kannst die Anzahl der ähnlichen Beiträge anpassen, indem du den Wert von 'posts_per_page' => 5 änderst.

Das fügt die ähnlichen Beiträge automatisch ohne Shortcode direkt in den Text deiner Beiträge ein.