Vertrauenswürdige WordPress-Tutorials, wenn Sie sie am dringendsten benötigen.
Anfängerleitfaden für WordPress
WPB Cup
25 Millionen+
Websites, die unsere Plugins verwenden
16+
Jahre WordPress-Erfahrung
3000+
WordPress-Tutorials von Experten

Wie man Sticky Posts in WordPress Custom Post Type Archiven hinzufügt

Wenn Sie eine Website haben, gibt es wahrscheinlich einige Beiträge, die wichtiger sind als andere. Eine Möglichkeit, sicherzustellen, dass Ihre Besucher diese Beiträge zuerst sehen, ist, sie ganz oben auf einer Seite zu platzieren.

Mit der WordPress-Funktion für Sticky-Beiträge können Sie dies mit Standardbeiträgen tun. Wenn Sie jedoch benutzerdefinierte Beitragstypen auf Ihrer Website verwenden, werden diese Sticky-Beiträge nicht wie erwartet am Anfang der Seite angezeigt.

In diesem Artikel zeigen wir Ihnen, wie Sie die Funktion für „sticky“ Beiträge zu Ihren benutzerdefinierten Beitragstypen hinzufügen und diese auf Archivseiten für benutzerdefinierte Beitragstypen anzeigen.

Wie man Sticky Posts in WordPress Custom Post Type Archiven hinzufügt

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, verwenden Sie wahrscheinlich bereits einen benutzerdefinierten Beitragstyp. Wenn Sie beispielsweise eine Buchrezensions-Website betreiben, haben Sie möglicherweise einen Beitragstyp für Buchrezensionen erstellt.

Sie möchten Ihre wichtigsten Inhalte möglicherweise am Anfang des Archivs für benutzerdefinierte Beitragstypen platzieren. Dies ist eine der besten Möglichkeiten, um ausführliche und zeitkritische Inhalte sowie Ihre beliebtesten benutzerdefinierten Beiträge hervorzuheben.

Aber obwohl WordPress eine Funktion für „sticky“ Beiträge bietet, ist diese für benutzerdefinierte Beitragstypen nicht verfügbar.

Sehen wir uns an, wie Sie Ihren benutzerdefinierten Beitragstyp-Archivseiten eine Sticky-Funktion hinzufügen.

Sticky Posts in benutzerdefinierten Beitragstypen hinzufügen

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

Hinweis: Obwohl dieses Plugin seit einiger Zeit nicht mehr aktualisiert wurde, funktioniert es in unseren Tests immer noch einwandfrei. Möglicherweise möchten Sie unseren Artikel lesen, ob Sie Plugins installieren sollten, die nicht mit Ihrer WordPress-Version getestet wurden.

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

Für dieses Tutorial werden wir den Beitragstyp 'Buchrezensionen' überprüfen.

Besuchen Sie die Einstellungen » Anheftbare Beiträge – Seite wechseln, um das Plugin zu konfigurieren

Danach müssen Sie unten auf dem Bildschirm auf die Schaltfläche „Änderungen speichern“ klicken.

Wenn Sie nun die Admin-Seite für diesen benutzerdefinierten Beitragstyp besuchen, werden Sie eine neue Spalte bemerken, in der Sie Beiträge als „sticky“ (hervorgehoben) markieren können. Klicken Sie einfach auf den Stern neben den Beiträgen, die Sie hervorheben möchten.

Klicken Sie auf den Stern neben den Beiträgen, die Sie als „Sticky“ (hervorgehoben) markieren möchten

Sie haben den Beitrag jetzt als „Sticky“ markiert. Das Problem ist, dass WordPress „Sticky Posts“ nur auf der Startseite anzeigt. Als Nächstes sehen wir uns an, wie „Sticky Posts“ auf Archivseiten angezeigt werden.

Sticky Posts in benutzerdefinierten Beitragstyp-Archiven anzeigen

Um Ihre „Sticky Posts“ am Anfang Ihrer Custom Post-Archivseite anzuzeigen, müssen Sie eine neue Vorlage erstellen.

Um dies zu tun, müssen Sie einen FTP-Client oder die Dateimanager-Option in Ihrem WordPress-Hosting-Kontrollpanel verwenden. Wenn Sie FTP noch nie verwendet haben, sollten Sie sich unseren Leitfaden ansehen, wie Sie FTP verwenden, um Dateien auf WordPress hochzuladen.

Sie müssen über Ihren FTP-Client oder Dateimanager auf Ihre Website zugreifen und dann zum Ordner /wp-content/themes/IHRTHEME/ navigieren.

Wenn Sie beispielsweise das Twenty Twenty-One-Theme verwenden, müssen Sie zu /wp-content/themes/twentytwentyone/ navigieren.

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

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

Besuchen Sie Ihren Theme-Ordner mit einem FTP-Client

Danach müssen Sie die Datei archive.php im selben Ordner finden. Kopieren Sie einfach den Inhalt von archive.php und fügen Sie ihn in die neu erstellte Datei ein.

Der nächste Schritt erfordert, dass 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 einfachen Hinzufügen von benutzerdefiniertem Code in WordPress.

Wenn Sie bereit sind, müssen Sie den folgenden Code zur `functions.php`-Datei Ihres Themes oder einem Code-Snippet-Plugin wie WPCode (empfohlen) hinzufügen: functions.php

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-Beiträge an den Anfang. Wenn Ihr Theme die Funktion post_class() verwendet, fügt es auch eine Klasse 'sticky' hinzu, damit Sie Ihre Sticky-Beiträge mit CSS gestalten können.

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

Vorschau von Sticky Post im Archiv für benutzerdefinierte Beitragstypen

Sie können Ihre Sticky-Posts jetzt mit der Klasse .sticky in der style.css-Stylesheet-Datei 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.

Vorschau der CSS-Formatierung von Sticky Posts

Experten-Anleitungen zu „Sticky Posts“

Wir hoffen, dieses Tutorial hat Ihnen geholfen zu lernen, wie Sie „Sticky Posts“ in WordPress Custom Post Type-Archiven hinzufügen. Möglicherweise möchten Sie auch einige andere Anleitungen zu „Sticky Posts“ in WordPress sehen:

Wenn Ihnen dieser Artikel gefallen hat, abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Video-Tutorials. Sie finden uns auch auf Twitter und Facebook.

Offenlegung: Unsere Inhalte werden von unseren Lesern unterstützt. Das bedeutet, wenn Sie auf einige unserer Links klicken, können wir eine Provision verdienen. Sehen Sie wie WPBeginner finanziert wird, warum das wichtig ist und wie Sie uns unterstützen können. Hier ist unser Redaktionsprozess.

Das ultimative WordPress-Toolkit

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

Leserinteraktionen

13 CommentsLeave a Reply

  1. Ich habe es geschafft, einen benutzerdefinierten Beitragstyp in einem Archiv „sticky“ zu machen, indem ich Ihrem Beispiel gefolgt bin. Super hilfreich, danke!

  2. Hallo,

    Ich schlage mir gerade den Kopf ein....
    Ich benutze dieses Plugin, es funktioniert gut, ich sehe es im Adminbereich und in der Datenbank sehe ich, dass es sticky_posts in wp_options aktualisiert. Aber wenn ich versuche, 'post__not_in' => get_option('sticky_posts') zu verwenden, filtert es nichts.
    Also versuche ich, var_dump(get_option('sticky_posts')) auszugeben, und alles, was ich bekomme, ist die ID des 'normalen Posts', nicht die vollständige Liste der IDs, die ich in wp_options/sticky_posts sehen kann.

    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. Sie können dieses Sticky Post Switch Plugin verwenden
    Es ermöglicht auch die Funktion für benutzerdefinierte Beitragstypen

  4. Das funktioniert gut, macht es aber auf jeder Seite eines paginierten Archivs sticky. Funktioniert die eingebaute Sticky-Funktion für Standardbeiträge auch so?

  5. Wie könnte ich das so einrichten, dass es mit einer benutzerdefinierten Taxonomie-Archivseite funktioniert?
    Ich habe versucht, 'is_tax' und 'is_category' anstelle von is_post_type_archive() in Zeile 4 Ihrer Funktion hinzuzufügen, aber die Seite funktioniert dann nicht mehr.

    Mir fehlt offensichtlich etwas, aber ich kann es nicht finden.
    Irgendwelche Ideen?

  6. Danke. Ist es möglich, dieses Tutorial anzupassen, um Sticky Posts auf einer spezialisierten Seiten-Vorlage anzuzeigen, anstatt auf der Archivseite? Wenn ja, wie kann ich das erreichen?

    • Wenn die benutzerdefinierte Taxonomie Beitragstypen mit Unterstützung für Sticky-Beiträge anzeigt, können Sie diese auf die gleiche Weise anzeigen. Anstatt der Vorlage archive-post-type.php, nehmen Sie Änderungen in der Vorlage taxonomy-custom-taxonomy.php vor.

      Admin

  7. Danke. Das ist nützlich.
    Aber wenn es möglich ist, ohne ein Plugin die Sticky-Funktionalität zu benutzerdefinierten Post-Typen hinzuzufügen?
    Können Sie den Snippet teilen?

Hinterlassen Sie eine Antwort

Vielen Dank, dass Sie einen Kommentar hinterlassen. Bitte beachten Sie, dass alle Kommentare gemäß unserer Kommentarrichtlinie moderiert werden und Ihre E-Mail-Adresse NICHT veröffentlicht wird. Bitte verwenden Sie KEINE Schlüsselwörter im Namensfeld. Führen wir ein persönliches und bedeutungsvolles Gespräch.