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:
- 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_contentwird 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.
