Vollstaendige Entwickleranleitung: WP_Query, get_posts, Shortcodes. Beiträge nach Kategorie filtern und Abfragen optimieren.
DE

Beiträge aus Kategorien in WordPress abrufen – Entwickleranleitung

5.00 /5 - (34 Stimmen )
Zuletzt überprüft: 1. Mai 2026
6Min. Lesezeit
Tutorial
500+ WP-Projekte
Full-Stack-Entwickler

#Einfuehrung in das kategoriebasierte Abrufen von Beiträgen

Erfahren Sie mehr über professionelle WordPress-Entwicklung bei WPPoland. Eine der häufigsten Aufgaben in der WordPress-Entwicklung ist das Abrufen von Beiträgen aus bestimmten Kategorien. Egal ob Sie ein benutzerdefiniertes Homepage-Layout erstellen, ein Kategoriearchiv-Template anlegen oder verwandte Inhalte anzeigen moechten: Effizientes Abfragen von Beiträgen nach Kategorie ist für jeden WordPress-Entwickler unverzichtbar.

Dieser umfassende Leitfaden behandelt mehrere Ansaetze zum Abrufen von Beitraegslisten aus Kategorien, von einfachen Implementierungen bis hin zu fortgeschrittenen Optimierungstechniken. Am Ende verfügen Sie über ein vollstaendiges Werkzeugset für kategoriebasierte Abfragen in jedem WordPress-Projekt.

#WordPress-Kategorien verstehen

Bevor wir mit dem Code beginnen, ist es wichtig zu verstehen, wie WordPress Kategorien handhabt:

  • Kategorien sind eine integrierte Taxonomie in WordPress
  • Jeder Beitrag kann mehreren Kategorien angehoeren
  • Kategorien können hierarchisch sein (Eltern-Kind-Beziehungen)
  • Kategoriedaten werden in den Tabellen wp_terms und wp_term_taxonomy gespeichert
  • Beitrag-Kategorie-Beziehungen werden in wp_term_relationships gespeichert

Das Verstaendnis dieser Struktur hilft dabei, effizientere Abfragen zu schreiben und Probleme zu loesen.

#Methode 1: WP_Query (der flexible Ansatz)

WP_Query ist die primäre WordPress-Klasse für das Abfragen von Beiträgen. Sie bietet maximale Flexibilitaet und ist der empfohlene Ansatz für die meisten Anwendungsfaelle.

#Grundlegende Kategorieabfrage

$args = array(
    'category_name' => 'news',
    'posts_per_page' => 10,
    'orderby' => 'date',
    'order' => 'DESC'
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        // Beitragsinhält anzeigen
        ?>
        <article>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <div class="entry-content">
                <?php the_excerpt(); ?>
            </div>
        </article>
        <?php
    }
    wp_reset_postdata();
}

#Abfrage nach Kategorie-ID

$args = array(
    'cat' => 5, // Kategorie-ID
    'posts_per_page' => 5
);

$query = new WP_Query($args);

#Mehrere Kategorien

// Beiträge in EINER BELIEBIGEN dieser Kategorien (ODER-Beziehung)
$args = array(
    'category__in' => array(5, 10, 15),
    'posts_per_page' => 10
);

// Beiträge in ALLEN diesen Kategorien (UND-Beziehung)
$args = array(
    'category__and' => array(5, 10),
    'posts_per_page' => 10
);

// Bestimmte Kategorien ausschließen
$args = array(
    'category__not_in' => array(3, 7),
    'posts_per_page' => 10
);

#Unterkategorien einschließen

// Beiträge aus Kategorie und allen Unterkategorien abrufen
$parent_category_id = 5;

$args = array(
    'cat' => $parent_category_id,
    'posts_per_page' => 20
);

// WP_Query schließt Unterkategorien automatisch ein, wenn 'cat' verwendet wird

#Methode 2: get_posts() (der einfache Ansatz)

Für einfachere Anwendungsfaelle bietet get_posts() eine unkompliziertere API.

#Grundlegende Verwendung

$posts = get_posts(array(
    'category' => 5,
    'posts_per_page' => 10,
    'orderby' => 'date',
    'order' => 'DESC'
));

foreach ($posts as $post) {
    setup_postdata($post);
    ?>
    <article>
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    </article>
    <?php
}
wp_reset_postdata();

#Mit Kategoriename

$posts = get_posts(array(
    'category_name' => 'technology',
    'numberposts' => 5
));

#Methode 3: Shortcodes für Content-Editoren

Das Erstellen eines Shortcodes ermöglicht es Content-Editoren, Kategorie-Beitraegslisten überall einzufuegen.

function category_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'category' => '',
        'posts' => 5,
        'orderby' => 'date',
        'order' => 'DESC'
    ), $atts);
    
    $args = array(
        'category_name' => $atts['category'],
        'posts_per_page' => intval($atts['posts']),
        'orderby' => $atts['orderby'],
        'order' => $atts['order']
    );
    
    $query = new WP_Query($args);
    
    ob_start();
    
    if ($query->have_posts()) {
        echo '<div class="category-posts-list">';
        while ($query->have_posts()) {
            $query->the_post();
            ?>
            <article class="category-post">
                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                <p><?php the_excerpt(); ?></p>
            </article>
            <?php
        }
        echo '</div>';
    } else {
        echo '<p>Keine Beiträge in dieser Kategorie gefunden.</p>';
    }
    
    wp_reset_postdata();
    
    return ob_get_clean();
}
add_shortcode('category_posts', 'category_posts_shortcode');

Verwendung: [category_posts category="news" posts="5"]

#Methode 4: Die Hauptabfrage modifizieren

Wenn Sie ändern moechten, welche Beiträge auf Kategoriearchivseiten erscheinen, verwenden Sie die pre_get_posts-Action.

function modify_category_queries($query) {
    // Nur Kategoriearchive in der Hauptabfrage modifizieren
    if ($query->is_category() && $query->is_main_query() && !is_admin()) {
        // 20 Beiträge pro Seite statt des Standardwerts anzeigen
        $query->set('posts_per_page', 20);
        
        // Beiträge aus bestimmter Kategorie auf bestimmten Kategorieseiten ausschließen
        $current_cat = get_queried_object();
        if ($current_cat->slug === 'featured') {
            $query->set('category__not_in', array(10)); // Kategorie mit ID 10 ausschließen
        }
    }
}
add_action('pre_get_posts', 'modify_category_queries');

#Leistungsoptimierung

#1. Transients für aufwaendige Abfragen verwenden

function get_cached_category_posts($category_id, $count = 5) {
    $cache_key = 'cat_posts_' . $category_id . '_' . $count;
    $posts = get_transient($cache_key);
    
    if (false === $posts) {
        $args = array(
            'cat' => $category_id,
            'posts_per_page' => $count
        );
        
        $query = new WP_Query($args);
        $posts = $query->posts;
        
        // Cache für 1 Stunde
        set_transient($cache_key, $posts, HOUR_IN_SECONDS);
    }
    
    return $posts;
}

#2. Datenbankabfragen optimieren

// Nur benoedigte Felder abrufen
$args = array(
    'category_name' => 'news',
    'posts_per_page' => 10,
    'fields' => 'ids' // Nur Post-IDs für bessere Performance abrufen
);

$query = new WP_Query($args);

#3. Object Caching verwenden

Wenn Ihre Website einen Object Cache (Redis, Memcached) verwendet, werden WP_Query-Ergebnisse automatisch gecacht, was die Performance bei wiederholten Abfragen verbessert.

#Fortgeschrittene Techniken

#Benutzerdefinierte Templates für Kategoriearchive

Erstellen Sie eine Template-Datei category-news.php für kategoriespezifisches Styling:

<?php
/* Template Name: Kategorie - Neuigkeiten */
get_header(); ?>

<div class="category-archive">
    <h1><?php single_cat_title(); ?></h1>
    
    <?php if (have_posts()) : ?>
        <div class="posts-grid">
            <?php while (have_posts()) : the_post(); ?>
                <?php get_template_part('content', 'category'); ?>
            <?php endwhile; ?>
        </div>
        
        <?php the_posts_pagination(); ?>
    <?php else : ?>
        <p>Keine Beiträge in dieser Kategorie gefunden.</p>
    <?php endif; ?>
</div>

<?php get_footer(); ?>

#AJAX-Laden für Kategoriebeiträge

Für eine bessere Benutzererfahrung implementieren Sie AJAX-Laden:

jQuery(document).ready(function($) {
    $('.load-more').on('click', function() {
        var button = $(this);
        var category = button.data('category');
        var page = button.data('page');
        
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'load_category_posts',
                category: category,
                page: page
            },
            success: function(response) {
                $('.posts-container').append(response);
                button.data('page', page + 1);
            }
        });
    });
});

#Häufige Fehler vermeiden

  1. Fehlender Post-Data-Reset: Rufen Sie nach benutzerdefinierten Schleifen immer wp_reset_postdata() auf
  2. Abfragen bei jedem Seitenaufruf: Verwenden Sie Caching für aufwaendige Abfragen
  3. Fehlende Existenzpruefung: Pruefen Sie immer have_posts() vor der Schleife
  4. Falsche Modifikation der Hauptabfrage: Verwenden Sie pre_get_posts statt neuer Abfragen auf Archivseiten
  5. Pagination ignorieren: Denken Sie an die Seitennavigation für große Kategoriearchive

#Fazit

WordPress bietet mehrere Möglichkeiten, Beiträge aus Kategorien abzurufen, die jeweils für unterschiedliche Szenarien geeignet sind:

  • WP_Query: beste Wahl für komplexe, benutzerdefinierte Anzeigen
  • get_posts(): ideal für einfache Beitraegslisten
  • Shortcodes: perfekt für Flexibilitaet der Content-Editoren
  • pre_get_posts: unverzichtbar für die Modifikation von Archivseiten

Das Verstaendnis dieser Methoden und der richtige Einsatz jeder einzelnen macht Sie zu einem effektiveren WordPress-Entwickler. Denken Sie immer an die Leistung, besonders auf Websites mit vielen Inhalten.

Implementieren Sie auf Produktionsseiten Caching-Strategien und testen Sie Ihre Abfragen mit Tools wie Query Monitor, um optimale Leistung sicherzustellen.

Nächster Schritt

Machen Sie aus dem Artikel eine echte Umsetzung

Dieser Block stärkt die interne Verlinkung und führt Nutzer gezielt zum nächsten sinnvollen Schritt im Service- und Content-System.

Soll das Thema auf Ihrer Website umgesetzt werden?

Wenn Sie aus dem Artikel konkrete Maßnahmen für Website, Relaunch oder Weiterentwicklung ableiten wollen, definiere ich den Scope und setze ihn um.

Relevanter Cluster

Weitere WordPress-Dienste und Wissensbasis entdecken

Stärken Sie Ihr Unternehmen mit professionellem technischen Support in den Kernbereichen des WordPress-Ökosystems.

Muss ich ein erfahrener Entwickler sein, um diese Anleitung zu verwenden?
Diese Anleitung richtet sich an WordPress-Entwickler mit mittlerem Kenntnisstand. Grundkenntnisse in PHP und WordPress werden vorausgesetzt, aber der gesamte Code wird Schritt für Schritt erklaert.
Funktionieren diese Techniken mit jedem WordPress-Theme?
Die meisten Techniken sind theme-unabhaengig und funktionieren mit Standard-WordPress-Themes. Stark angepasste Themes können jedoch zusätzliche Anpassungen erfordern.
Ist es sicher, diese Änderungen auf einer Live-Website umzusetzen?
Testen Sie Änderungen immer zuerst in einer Staging-Umgebung. Obwohl diese Techniken produktionsbereit sind, verhindert ein vorheriger Test potenzielle Probleme auf der Live-Website.
Funktionieren diese Methoden mit Page-Buildern wie Elementor?
Ja, die meisten Methoden funktionieren zusammen mit Page-Buildern. Einige erfordern möglicherweise spezifische Integrationsschritte, die im Implementierungsabschnitt beschrieben sind.

Sie brauchen ein FAQ für Branche und Zielmarkt? Wir erstellen eine Version passend zu Ihren Business-Zielen.

Kontakt aufnehmen

Ähnliche Artikel

Vollständiger Leitfaden zu WordPress Multisite für Enterprise-Deployments. Architekturmuster, Skalierung auf 1000+ Seiten, Sicherheitshärtung, Domain-Mapping, Benutzerverwaltung und Kostenoptimierung für Franchise-, Hochschul- und Behörden-Netzwerke.
wordpress

WordPress Multisite für Enterprise: Architektur, Skalierung und Best Practices

Vollständiger Leitfaden zu WordPress Multisite für Enterprise-Deployments. Architekturmuster, Skalierung auf 1000+ Seiten, Sicherheitshärtung, Domain-Mapping, Benutzerverwaltung und Kostenoptimierung für Franchise-, Hochschul- und Behörden-Netzwerke.

Wie die WordPress Abilities API KI-Agenten ermöglicht, WordPress-Funktionen programmatisch zu entdecken und zu nutzen. Intelligente Workflows mit MCP-Servern, ChatGPT-Plugins und Claude-Tools.
wordpress

WordPress AI Workflows: Die Abilities API Revolution in WordPress 7.x

Wie die WordPress Abilities API KI-Agenten ermöglicht, WordPress-Funktionen programmatisch zu entdecken und zu nutzen. Intelligente Workflows mit MCP-Servern, ChatGPT-Plugins und Claude-Tools.

Das Verschieben Ihrer WordPress-Website kann entmutigend sein, aber mit richtigem Wissen und Vorbereitung wird es überschaubar. Ob Domains wechseln, Hosting upgraden oder Website-Architektur umstrukturieren, dieser umfassende Leitfaden deckt jeden Schritt ab.
development

WordPress-Migrationsleitfaden 2024

Das Verschieben Ihrer WordPress-Website kann entmutigend sein, aber mit richtigem Wissen und Vorbereitung wird es überschaubar. Ob Domains wechseln, Hosting upgraden oder Website-Architektur umstrukturieren, dieser umfassende Leitfaden deckt jeden Schritt ab.