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

Jak dodać przypięte wpisy w archiwum własnego typu treści w WordPress?

Jednym ze sposobów, aby pomóc importerom znaleźć twoje najważniejsze wpisy, jest umieszczenie ich na górze strony, gdzie najłatwiej je powiadomić.

Jednak podczas gdy funkcja przypiętych wpisów WordPress może to zrobić ze standardowymi wpisami, nie działa ona w przypadku utworzonych własnych typów treści (CPT). Z naszego doświadczenia wynika, że najłatwiejszym sposobem na dodanie tej funkcji do twojej witryny WordPress jest użycie wtyczki.

W tym artykule pokażemy, jak dodać funkcję przypiętych wpisów do niestandardowych typów treści i wyświetlać je na stronach archiwum niestandardowych typów treści.

How to Add Sticky Posts in WordPress Custom Post Type Archives

Dlaczego warto przypiąć własne wpisy do WordPressa?

Jeśli tworzysz treści dla swojej witryny internetowej WordPress w formacie innym niż standardowy wpis lub strona, to prawdopodobnie korzystasz już z własnego typu treści. Na przykład, jeśli prowadzisz witrynę internetową z recenzjami książek, być może utworzyłeś już typ treści Recenzje książek.

Możesz umieścić swoją najważniejszą treść na górze archiwum niestandardowego typu treści. Jest to jeden z najlepszych sposobów na wyróżnienie dogłębnych i wrażliwych czasowo treści, a także twoich najpopularniejszych wpisów niestandardowych.

Podczas gdy WordPress oferuje funkcję przypiętych wpisów, nie jest ona dostępna dla własnych typów treści.

Rzućmy okiem na to, jak dodać funkcję przypiętą do stron archiwum własnego typu treści.

Dodawanie przypiętych wpisów w niestandardowych typach treści

Najpierw musisz zainstalować i włączyć wtyczkę Sticky Posts – Switch. Aby uzyskać więcej informacji, zobacz nasz przewodnik krok po kroku, jak zainstalować wtyczkę WordPress.

Uwaga: Chociaż ta wtyczka nie była aktualizowana od jakiegoś czasu, nadal działa dobrze w naszych testach. Możesz przeczytać nasz artykuł na temat tego, czy używać wtyczek, które nie zostały przetestowane z twoją wersją WordPressa.

Po włączaniu należy przejść na stronę Ustawienia ” Przypięte wpisy – przełącznik, aby skonfigurować wtyczkę. Wystarczy zaznaczyć pole obok własnych typów treści, które mają być przypięte.

W tym poradniku sprawdzimy typ treści „Recenzje książek”.

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

Następnie należy kliknąć przycisk „Zapisz zmiany” u dołu ekranu.

Teraz, gdy odwiedzisz stronę administratora dla tego własnego typu treści, powiadomisz o nowej kolumnie, w której możesz ustawić przypięte wpisy. Wszystko, co musisz zrobić, to kliknąć gwiazdkę obok wpisów, które chcesz wyróżnić.

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

Wpis został przypięty. Problem polega na tym, że WordPress wyświetla przypięte wpisy tylko na stronie głównej. Następnie przyjrzymy się, jak wyświetlić przypięte wpisy na stronach archiwum.

Wyświetlanie przypiętych wpisów w archiwach własnego typu treści

Aby wyświetlić twoje przypięte wpisy na górze strony własnego archiwum wpisów, musisz utworzyć nowy szablon.

Aby to zrobić, musisz użyć klienta FTP lub opcji menedżera plików w twoim panelu sterowania hostingu WordPress. Jeśli nie korzystałeś wcześniej z FTP, możesz zapoznać się z naszym przewodnikiem na temat korzystania z FTP do przesyłania plików do WordPress.

Musisz uzyskać dostęp do swojej witryny za pomocą klienta FTP lub menedżera plików, a następnie przejść do katalogu /wp-content/themes/YOURTHEME/.

Na przykład, jeśli korzystasz z motywu Twenty Twenty-One, musisz przejść do /wp-content/themes/twentytwentyone/.

Następnie należy utworzyć w tym katalogu nowy plik o nazwie archive-POSTTYPE.php.

Na przykład, jeśli twój własny typ treści to „bookreviews”, powinieneś utworzyć nowy plik o nazwie archive-bookreviews.php.

Visit Your Theme Folder Using an FTP Client

Następnie należy znaleźć plik archive.php w tym samym katalogu. Wystarczy skopiować treść archive.php i wkleić ją do nowo utworzonego pliku.

Następny krok wymaga dodania kodu do plików twojego motywu. Jeśli potrzebujesz pomocy w dodaniu kodu do twojej witryny, zapoznaj się z naszym przewodnikiem na temat dodawania własnego kodu w WordPress.

Gdy będziesz gotowy, musisz dodać następujący kod do pliku functions. php twojego motywu lub wtyczki fragmentów kodu, takiej jak WPCode (zalecane):

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');

Ten kod przenosi twoje przypięte wpisy na górę. Jeśli twój motyw używa funkcji post_class(), to dodaje również klasę „przypięty”, dzięki czemu możesz stylizować swoje wpisy za pomocą CSS.

Tak wygląda archiwum własnego typu treści Recenzje książek na naszej witrynie demonstracyjnej. Przed dodaniem kodu, przypięty wpis był drugi na liście.

Preview of Sticky Post on Custom Post Type Archive

Możesz teraz stylizować swoje przypięte wpisy, używając klasy .sticky w arkuszu stylów style.css twojego motywu. Oto przykład:

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

Oto zaktualizowany zrzut ekranu z naszej demonstracyjnej witryny internetowej.

Preview of CSS Styling of Sticky Post

Przewodniki ekspertów dotyczące przypiętych wpisów

Teraz, gdy już wiesz, jak dodać przypięte wpisy do archiwów własnych typów treści, być może spodoba ci się kilka innych przewodników związanych z przypiętymi wpisami w WordPress.

Mamy nadzieję, że ten poradnik pomógł ci nauczyć się dodawać przypięte wpisy w archiwach typu treści WordPress. Możesz również zapoznać się z naszym przewodnikiem na temat tego, jak przyspieszyć twoją witrynę internetową WordPress lub naszymi eksperckimi typami najlepszych wtyczek do ankiet WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz na niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak WPBeginner jest finansowany, dlaczego to ma znaczenie i jak możesz nas wspierać. Oto nasz proces redakcyjny.

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.

Najlepszy zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi - zbiór produktów i zasobów związanych z WordPressem, które każdy profesjonalista powinien mieć!

Reader Interactions

14 komentarzyZostaw odpowiedź

  1. Syed Balkhi

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. 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! :)

      Administrator

  3. 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

  4. Markus Froehlich

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

  5. 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?

  6. 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?

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

      Administrator

  8. 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.

      Administrator

  9. 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?

  10. Anir

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

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszymi polityka komentarzy, a Twój adres e-mail NIE zostanie opublikowany. NIE używaj słów kluczowych w polu nazwy. Przeprowadźmy osobistą i konstruktywną rozmowę.