Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Hinzufügen von Sticky Posts in WordPress Custom Post Type Archiven

Eine Möglichkeit, den Besuchern das Auffinden Ihrer wichtigsten Beiträge zu erleichtern, besteht darin, sie am Anfang der Seite zu platzieren, wo sie am leichtesten zu erkennen sind.

Die Funktion „Hervorgehobene Beiträge“ von WordPress kann zwar für Standard-Beiträge verwendet werden, funktioniert jedoch nicht für individuell erstellte Beiträge (CPTs). Unserer Erfahrung nach ist es am einfachsten, diese Funktion auf Ihrer WordPress Website mit einem Plugin hinzuzufügen.

In diesem Artikel zeigen wir Ihnen, wie Sie die Funktionalität für oben gehaltene Beiträge zu Ihren individuellen Inhaltstypen hinzufügen und sie auf den Seiten des Archivs für individuelle Inhaltstypen anzeigen können.

How to Add Sticky Posts in WordPress Custom Post Type Archives

Warum WordPress Custom Posts Sticky machen?

Wenn Sie Inhalte für Ihre WordPress-Website in einem anderen Format als einem Standardbeitrag oder einer Standardseite erstellen, dann verwenden Sie wahrscheinlich bereits einen benutzerdefinierten Beitragstyp. Wenn Sie zum Beispiel eine Website mit Buchrezensionen betreiben, haben Sie vielleicht einen Post-Typ „Buchrezensionen“ erstellt.

Sie können Ihre wichtigsten Inhalte an den Anfang des Archivs des benutzerdefinierten Beitragstyps stellen. Dies ist eine der besten Möglichkeiten, um ausführliche und zeitkritische Inhalte sowie Ihre beliebtesten benutzerdefinierten Beiträge zu präsentieren.

WordPress bietet zwar eine Sticky-Posts-Funktion, diese ist jedoch nicht für benutzerdefinierte Beitragstypen verfügbar.

Schauen wir uns an, wie Sie Ihren benutzerdefinierten Beitragstyp-Archivseiten eine Sticky-Funktion hinzufügen können.

Hinzufügen von Sticky Posts in benutzerdefinierten Beitragstypen

Zunächst müssen Sie das Sticky Posts – Switch Plugin installieren und aktivieren. Weitere Details finden Sie in unserer Schritt-für-Schritt-Anleitung für die Installation eines WordPress-Plugins.

Hinweis: Obwohl dieses Plugin seit einiger Zeit nicht mehr aktualisiert wurde, funktioniert es in unseren Tests immer noch einwandfrei. Lesen Sie bitte unseren Artikel über die Verwendung von Plugins, die nicht mit Ihrer WordPress-Version getestet wurden.

Nach der Aktivierung müssen Sie die Seite Einstellungen “ Sticky Posts – Umschalten aufrufen, um das Plugin zu konfigurieren. Aktivieren Sie einfach das Kästchen neben den benutzerdefinierten Beitragstypen, die Sie als „sticky“ kennzeichnen möchten.

In diesem Tutorial werden wir den Beitragstyp „Buchrezensionen“ überprüfen.

Visit the Settings » Sticky Posts - Switch Page to Configure the Plugin

Danach müssen Sie auf die Schaltfläche „Änderungen speichern“ am unteren Rand des Bildschirms klicken.

Wenn Sie nun die Verwaltungsseite für diesen benutzerdefinierten Beitragstyp aufrufen, werden Sie eine neue Spalte sehen, in der Sie Beiträge als „sticky“ kennzeichnen können. Klicken Sie einfach auf den Stern neben den Beiträgen, die Sie kennzeichnen möchten.

Click the Star Next to the Posts You Wish to Make Sticky

Sie haben den Beitrag jetzt als „sticky“ gekennzeichnet. Das Problem dabei ist, dass WordPress „sticky“ Beiträge nur auf der Startseite anzeigt. Als Nächstes werden wir uns ansehen, wie man Sticky Posts auf Archivseiten anzeigt.

Anzeige von Sticky Posts in benutzerdefinierten Post Type Archiven

Um Ihre Sticky Posts oben auf Ihrer benutzerdefinierten Beitragsarchivseite anzuzeigen, müssen Sie eine neue Vorlage erstellen.

Dazu müssen Sie einen FTP-Client oder die Dateimanager-Option in Ihrem WordPress-Hosting-Control Panel verwenden. Wenn Sie noch nie mit FTP gearbeitet haben, sollten Sie sich unsere Anleitung zum Hochladen von Dateien in WordPress mit FTP ansehen.

Sie müssen mit Ihrem FTP-Client oder Dateimanager auf Ihre Website zugreifen und dann zum Ordner /wp-content/themes/YOURTHEME/ gehen.

Wenn Sie zum Beispiel das Thema Twenty Twenty-One verwenden, müssen Sie zu /wp-content/themes/twentytwentyone/ navigieren.

Als nächstes müssen Sie in diesem Ordner eine neue Datei mit einem Namen wie archive-POSTTYPE.php erstellen.

Wenn Ihr benutzerdefinierter Post-Type-Slug beispielsweise „bookreviews“ lautet, sollten Sie eine neue Datei namens archive-bookreviews.php erstellen.

Visit Your Theme Folder Using an FTP Client

Danach müssen Sie die Datei archive.php im selben Ordner finden. Kopieren Sie einfach den Inhalt der Datei archive.php und fügen Sie ihn in die neue Datei ein, die Sie erstellt haben.

Im nächsten Schritt müssen Sie Code zu Ihren Theme-Dateien hinzufügen. Wenn Sie Hilfe beim Hinzufügen von Code zu Ihrer Website benötigen, lesen Sie unsere Anleitung zum Hinzufügen von benutzerdefiniertem Code in WordPress.

Wenn Sie fertig sind, müssen Sie den folgenden Code in die Datei functions.php Ihres Themes oder in ein Code-Snippets-Plugin wie WPCode (empfohlen) einfügen:

function wpb_cpt_sticky_at_top( $posts ) {
  
    // apply it on the archives only
    if ( is_main_query() && is_post_type_archive() ) {
        global $wp_query;
  
        $sticky_posts = get_option( 'sticky_posts' );
        $num_posts = count( $posts );
        $sticky_offset = 0;
  
        // Find the sticky posts
        for ($i = 0; $i < $num_posts; $i++) {
  
            // Put sticky posts at the top of the posts array
            if ( in_array( $posts[$i]->ID, $sticky_posts ) ) {
                $sticky_post = $posts[$i];
  
                // Remove sticky from current position
                array_splice( $posts, $i, 1 );
  
                // Move to front, after other stickies
                array_splice( $posts, $sticky_offset, 0, array($sticky_post) );
                $sticky_offset++;
  
                // Remove post from sticky posts array
                $offset = array_search($sticky_post->ID, $sticky_posts);
                unset( $sticky_posts[$offset] );
            }
        }
  
        // Look for more sticky posts if needed
        if ( !empty( $sticky_posts) ) {
  
            $stickies = get_posts( array(
                'post__in' => $sticky_posts,
                'post_type' => $wp_query->query_vars['post_type'],
                'post_status' => 'publish',
                'nopaging' => true
            ) );
  
            foreach ( $stickies as $sticky_post ) {
                array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
                $sticky_offset++;
            }
        }
  
    }
  
    return $posts;
}
  
add_filter( 'the_posts', 'wpb_cpt_sticky_at_top' );
 
// Add sticky class in article title to style sticky posts differently
 
function cpt_sticky_class($classes) {
            if ( is_sticky() ) : 
            $classes[] = 'sticky';
            return $classes;
        endif; 
        return $classes;
                }
    add_filter('post_class', 'cpt_sticky_class');

Dieser Code verschiebt Ihre „sticky posts“ an den Anfang. Wenn Ihr Thema die post_class() -Funktion verwendet, fügt es auch eine „sticky“-Klasse hinzu, so dass Sie Ihre Sticky-Beiträge mit CSS gestalten können.

So sieht das Archiv des benutzerdefinierten Beitragstyps Buchrezensionen auf unserer Demoseite aus. Vor dem Hinzufügen des Codes stand der Sticky Post an zweiter Stelle der Liste.

Preview of Sticky Post on Custom Post Type Archive

Sie können Ihre Sticky-Posts jetzt mit der Klasse .sticky im Stylesheet style.css Ihres Themes gestalten. Hier ist ein Beispiel:

.sticky { 
background-color:#ededed;
background-image:url('http://example.com/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}

Hier ist ein aktualisierter Screenshot von unserer Demo-Website.

Preview of CSS Styling of Sticky Post

Expertenratschläge zu Sticky Posts

Nun, da Sie wissen, wie man Sticky Posts zu benutzerdefinierten Post-Type-Archiven hinzufügt, möchten Sie vielleicht einige andere Anleitungen zu Sticky Posts in WordPress sehen.

Wir hoffen, dass dieses Tutorial Ihnen geholfen hat, zu lernen, wie man Sticky Posts in WordPress Custom Post Type Archiven hinzufügt. Vielleicht interessieren Sie sich auch für unseren Leitfaden zur Beschleunigung Ihrer WordPress-Website oder unsere Expertenauswahl der besten WordPress-Umfrage-Plugins.

Wenn Ihnen dieser Artikel gefallen hat, dann abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Videotutorials. Sie können uns auch auf Twitter und Facebook finden.

Offenlegung: Unsere Inhalte werden von unseren Lesern unterstützt. Das bedeutet, dass wir möglicherweise eine Provision verdienen, wenn Sie auf einige unserer Links klicken. Mehr dazu erfahren Sie unter Wie WPBeginner finanziert wird , warum das wichtig ist und wie Sie uns unterstützen können. Hier finden Sie unseren redaktionellen Prozess .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Das ultimative WordPress Toolkit

Erhalte KOSTENLOSEN Zugang zu unserem Toolkit - eine Sammlung von WordPress-bezogenen Produkten und Ressourcen, die jeder Profi haben sollte!

Reader Interactions

13 KommentareEine Antwort hinterlassen

  1. Clare

    I got a custom post type to be „sticky“ in an archive in 15 minutes following your example. Super helpful, thank you!

    • WPBeginner Support

      Glad to hear our guide was helpful! :)

      Admin

  2. rom

    Hi,

    I’m banging my head right now….
    I’m using this plugin, it works fine, I can see it in the admin, and on the data base, I can see it update the sticky_posts in wp_options. But, when I try to use ‚post__not_in‘ => get_option(’sticky_posts‘), it doesn’t filter any thing.
    So I try to var_dump(get_option(’sticky_posts‘)), and all I get is the id of the ’normal post‘, not the full list of id who I can see are in the wp_options/sticky_posts.

    Which mean if I try to use is_stiky in my loop, it only work in ’normal‘ post, not in CPT, which is logic, since get_option(’sticky_posts‘) is not working properly…. Any idea how I can fix that ? it’s driving me crazy :D

  3. Markus Froehlich

    You can use this Sticky Post Switch Plugin
    It also enables the featuere for custom post types

  4. Pat Ducat

    This works good however it makes it sticky on every page of a paginated archive. Is this how the built-in sticky functionality for standard posts work too?

  5. Aaron

    How could i set this up to work with a custom taxonomy archive page?
    I’ve tried adding ‚is_tax‘ and ‚is_category‘ instead of the is_post_type_archive() on line 4 of your function but it just breaks the page.

    I’m missing something obviously but can’t seem to find it.
    Any ideas?

  6. Daniel Dropik

    Thanks. Is it possible to adapt this tutorial to display sticky posts onto a specialized page template, rather than on the archives page? If so how might I accomplish this?

    • WPBeginner Support

      Daniel, yes sure it can be done in a separate page template. Simply create a custom template and follow the instructions given above.

      Admin

  7. Shawn

    How do you do this for Custom Taxonomy.php instead of archives.

    • WPBeginner Support

      if the custom taxonomy is displaying post types with sticky posts support, then you can display it in the same manner. Instead of archive-post-type.php template, make changes in taxonomy-custom-taxonomy.php template.

      Admin

  8. Mr.Ultra

    Thanks. This is useful.
    But if it’s possible not using a plugin to add sticky functionality to custom post types?
    Can you share the snippet?

  9. Anir

    Very informative, thanks for sharing. It helps a lot.

Eine Antwort hinterlassen

Danke, dass du einen Kommentar hinterlassen möchtest. Bitte beachte, dass alle Kommentare nach unseren kommentarpolitik moderiert werden und deine E-Mail-Adresse NICHT veröffentlicht wird. Bitte verwende KEINE Schlüsselwörter im Namensfeld. Lass uns ein persönliches und sinnvolles Gespräch führen.