WordPress ma bardzo fajną funkcję zwaną przypięte posty. Pomyśl o przypiętych postach jako o wyróżnionych postach na Twoim blogu. Kiedy oznaczysz post jako przypięty, pojawi się on nad Twoimi nowymi postami, ale tylko jeśli Twój motyw na to pozwala. W tym poradniku pokażemy Ci, jak wyświetlać najnowsze przypięte posty w WordPressie.

Uwaga: Jest to samouczek na poziomie średniozaawansowanym i wymaga podstawowej wiedzy o HTML/CSS oraz znajomości motywów WordPress.
Samouczek wideo
Jeśli nie podobał Ci się film lub potrzebujesz więcej instrukcji, czytaj dalej.
Pierwszą rzeczą, którą musisz zrobić, jest skopiowanie i wklejenie tego fragmentu kodu do pliku functions.php Twojego motywu lub do dedykowanego wtyczki.
function wpb_latest_sticky() {
/* Get all sticky posts */
$sticky = get_option( 'sticky_posts' );
/* Sort the stickies with the newest ones at the top */
rsort( $sticky );
/* Get the 5 newest stickies (change 5 for a different number) */
$sticky = array_slice( $sticky, 0, 5 );
/* Query sticky posts */
$the_query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) );
// The Loop
if ( $the_query->have_posts() ) {
$return .= '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
$return .= '<li><a href="' .get_permalink(). '" title="' . get_the_title() . '">' . get_the_title() . '</a><br />' . get_the_excerpt(). '</li>';
}
$return .= '</ul>';
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
return $return;
}
add_shortcode('latest_stickies', 'wpb_latest_sticky');
Powyższy kod przeszukuje bazę danych WordPress, aby pobrać 5 najnowszych wyróżnionych postów. Następnie wyświetla tytuł każdego wyróżnionego posta z linkiem w formacie listy. Zawinęliśmy to wszystko w funkcję i stworzyliśmy shortcode.
Teraz, aby wyświetlić swoje najnowsze przypięte posty, możesz użyć krótkiego kodu [latest_stickies] w dowolnym poście, stronie, a nawet widżecie tekstowym WordPressa.
Jeśli chcesz używać shortcode'ów w widżecie tekstowym, musisz dodać tę dodatkową linię kodu do pliku functions.php swojego motywu lub wtyczki specyficznej dla witryny.
add_filter('widget_text', 'do_shortcode');
Ten fragment kodu i funkcja mogą być z powodzeniem wykorzystane w suwaku polecanych elementów lub w każdej innej zaawansowanej funkcji, którą chciałbyś wyświetlić na swojej stronie. Ten fragment jest głównie przeznaczony dla strony WordPress z niestandardową stroną główną lub wyglądem w stylu magazynu.
To wszystko, mamy nadzieję, że ten artykuł pomógł Ci wyświetlić najnowsze przypięte posty na Twoim blogu WordPress. Możesz również zapoznać się z naszym poradnikiem, jak dodać datę wygaśnięcia do przypiętych postów w WordPress.
Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube z samouczkami wideo dotyczącymi WordPressa. Możesz nas również znaleźć na Twitterze i Google+.


umair
bardzo pouczające wysiłki z Twojej strony, ten kod działa doskonale,
Mam pytanie, mam wiele kategorii i podkategorii, więc chcę po prostu zrobić przypięty post dla każdej kategorii osobno, i wyświetlić go na stronie listy kategorii, gdzie wymienione są wszystkie posty z danej kategorii, np. (Kategoria Sport -> jeden przypięty post – Kategoria przepisy kulinarne -> jeden przypięty post) itp.
Dom
Dzięki za naprowadzenie mnie na właściwy trop!!
Kod świetnie działa w wyświetlaniu tytułu w miejscu wklejenia skróconego kodu.
Jednak próbowałem znaleźć metodę wyświetlania całego posta (całej treści, zamiast tylko tytułu lub nawet fragmentu) na konkretnej stronie.
Zdecydowałem się pobawić Twoim kodem powyżej, aby spróbować to osiągnąć i w końcu mi się udało…
Chociaż tytuł wyświetla się w tym samym rozmiarze co tekst akapitu, jestem pewien, że mogę to naprawić.
Here’s what I changed…please let me know if you think there’s something I should reconsider lest the whole world explodes
Po prostu zmieniłem tekst `get_the_excerpt()` na `get_content()` i to skutecznie pobrało cały wpis na blogu na tę stronę.
Aby usunąć wcięcia punktowane, usunąłem tagi " " " ", ale musiałem zostawić apostrofy, w przeciwnym razie strona by się nie załadowała.
Więc w istocie, tam gdzie wcześniej było " lub ", teraz jest tylko " i tak dalej.
To wszystko, co zmieniłem i działa dla mnie jak marzenie...
Zauważyłem 2 problemy:
1: Czasami ładuje większość wpisu, ale nie zawsze do samego końca, zwłaszcza jeśli wpis zostanie później edytowany... Czy ktoś ma sugestie, jak temu zapobiec?
2: Chciałbym, żeby pojawił się również obraz wyróżniający, to uczyniłoby to ostatecznym elastycznym rozwiązaniem! Jakieś przemyślenia na ten temat?
Jeszcze raz dziękuję za radę!
Mam nadzieję, że to, co wyjaśniłem, ma sens dla każdego, kto chce osiągnąć to samo, co ja.
Achi Baten
Jak mogę wyświetlić posty na stronie głównej tak jak Ty?
Wsparcie WPBeginner
Nasza witryna korzysta z niestandardowego motywu zaprojektowanego specjalnie do naszych potrzeb. Możesz jednak znaleźć podobne funkcje w niektórych motywach magazynowych dostępnych online.
Admin
richard
Cześć
Dziękuję za Twój kod. Mam jednak pewien problem i napotykam 2 trudności.
Chcę wyświetlić tylko jeden wyróżniony post na mojej stronie głównej i tylko film z YouTube znajdujący się w treści.
Właściwie wyświetlam tytuł i całą zawartość posta (w tym teksty, zdjęcia i filmy).
Drugi problem polega na tym, że YouTube jest wyświetlany jako link, a nie osadzony bezpośrednio na mojej stronie głównej.
Dziękuję za pomoc
Raviraj
Cześć,
Przetestowałem z kodem, działa dobrze, gdy co najmniej 1 post został przypisany jako wyróżniony, w przeciwnym razie, gdy żaden post nie jest przypisany jako wyróżniony, wyświetli wszystkie ostatnie 5 postów.
Tak byłby warunek wyświetlania tylko wyróżnionych postów, jeśli nie ma przypisanych wyróżnionych postów, wtedy nic nie powinno być wyświetlane.
Z góry dziękuję
Zespół WPBeginner
Dziękujemy za zwrócenie na to uwagi. Zaktualizowaliśmy kod.
AnastisSourgoutsidis
„caller_get_posts” został zastąpiony przez „ignore_sticky_posts” od wersji 3.1, więc uważam, że ważne jest, aby zmienić kod, aby to odzwierciedlić.
Ponadto, a) $post->ID nie jest potrzebne w tym przypadku get_permalink(), ponieważ ustawiłeś dane posta, wywołując $the_query->the_post(), a jeśli z jakiegokolwiek powodu nadal chcesz uwzględnić $post->ID, powinieneś globalizować, tj. global $post;