Um ähnliche Beiträge in der Mitte eines Blog-Beitrags in WordPress anzuzeigen, können Sie eine benutzerdefinierte Funktion erstellen, die den Inhalt des Beitrags filtert und ähnliche Beiträge in der Mitte einfügt. Diese Funktion wird den the_content-Filter verwenden, um den Inhalt des Beitrags zu manipulieren.
Schritt 1: Funktion erstellen und in die functions.php einfügen
Fügen Sie den folgenden Code in die functions.php-Datei Ihres aktiven Themes oder in ein benutzerdefiniertes Plugin ein:
function insert_related_posts_in_middle($content) {
if (is_single() && in_the_loop() && is_main_query()) {
// Anzahl der ähnlichen Beiträge
$related_posts_count = 3;
// Abrufen der ähnlichen Beiträge basierend auf Kategorien oder Tags
$related_posts = get_related_posts($related_posts_count);
if ($related_posts->have_posts()) {
$related_content = '<div class="related-posts"><h3>Ähnliche Beiträge</h3><ul>';
while ($related_posts->have_posts()) {
$related_posts->the_post();
$related_content .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
$related_content .= '</ul></div>';
// Zurücksetzen der globalen Post-Daten
wp_reset_postdata();
// Inhalt des Beitrags aufteilen, um ähnliche Beiträge in der Mitte einzufügen
$paragraphs = explode('</p>', $content);
$middle_index = ceil(count($paragraphs) / 2);
// Fügen Sie die ähnlichen Beiträge in der Mitte ein
$paragraphs[$middle_index] .= $related_content;
// Setzen Sie den Inhalt wieder zusammen
$content = implode('</p>', $paragraphs);
}
}
return $content;
}
add_filter('the_content', 'insert_related_posts_in_middle');
function get_related_posts($count) {
global $post;
$args = array(
'posts_per_page' => $count,
'post__not_in' => array($post->ID),
'category__in' => wp_get_post_categories($post->ID),
'orderby' => 'rand',
);
return new WP_Query($args);
}
Schritt 2: Erklärung der Funktion
is_single() && in_the_loop() && is_main_query(): Diese Bedingungen stellen sicher, dass die Funktion nur bei Einzelbeiträgen und in der Hauptabfrage ausgeführt wird.get_related_posts(): Diese Funktion holt sich ähnliche Beiträge basierend auf den Kategorien des aktuellen Beitrags. Sie können dasorderby-Argument ändern, um die ähnlichen Beiträge beispielsweise nach Datum oder Titel zu sortieren.explode('</p>', $content): Der Inhalt des Beitrags wird in Absätze aufgeteilt, um die ähnlichen Beiträge in der Mitte einzufügen.$middle_index: Der Index, an dem die ähnlichen Beiträge eingefügt werden.wp_reset_postdata(): Stellt sicher, dass die globale Post-Variable nach der benutzerdefinierten Query zurückgesetzt wird.
Schritt 3: Anpassung
- Anzahl ähnlicher Beiträge: Sie können die Anzahl der angezeigten ähnlichen Beiträge anpassen, indem Sie den Wert von
$related_posts_countändern. - Ähnliche Beiträge nach Tags: Wenn Sie ähnliche Beiträge lieber nach Tags statt nach Kategorien anzeigen möchten, ändern Sie
category__inintag__inund verwenden Siewp_get_post_tags($post->ID)anstelle vonwp_get_post_categories($post->ID).
Schritt 4: Styling
Sie können das Erscheinungsbild der ähnlichen Beiträge anpassen, indem Sie CSS-Stile für .related-posts in Ihre style.css-Datei hinzufügen.
Nutzung
Diese Funktion wird automatisch auf allen Einzelbeiträgen angewendet und zeigt ähnliche Beiträge in der Mitte des Beitragsinhalts an. Sie müssen nur sicherstellen, dass Ihr Theme die Ausgabe des Inhalts über the_content() steuert.