W artykule:
Niedawno jeden z naszych użytkowników zapytał nas, czy możliwe jest dodawanie sticky postów do niestandardowych archiwów typu post. Domyślnie WordPress ma funkcjonalność sticky dostępną dla postów, ale nie dla innych typów postów. W tym artykule pokażemy, jak dodać sticky posty w WordPress niestandardowe archiwa typu post. Zanim przejdziemy do przodu, prawdopodobnie chcesz dowiedzieć się, jak tworzyć niestandardowe typy postów w WordPress.
Dodawanie Sticky postów w niestandardowych typach postów
Pierwszą rzeczą, którą musisz zrobić, to zainstalować i aktywować wtyczkę Sticky Custom Post Types. Po aktywacji wtyczki przejdź do Ustawienia ” Czytanie i przewiń w dół do sekcji przyklejone niestandardowe typy postów. Następnie musisz wybrać niestandardowe typy postów, w których chcesz włączyć tę opcję.
Teraz to, co zrobiliśmy tutaj, to to, że dodaliśmy funkcję sticky posts do naszych niestandardowych typów postów. Sticky posty w niestandardowych typach postów będą wyświetlane na stronie głównej, podobnie jak zwykłe sticky posty.
Problem polega na tym, że domyślnie WordPress pokazuje tylko lepkie posty na stronie głównej. Nie pokazuje lepkich postów na stronach archiwalnych.
Wyświetlanie lepkich postów w niestandardowych archiwach typu Post
Załóżmy, że masz niestandardowy typ postu dla recenzji filmów z włączonymi sticky postami za pomocą wtyczki, o której wspomnieliśmy powyżej. Teraz chcesz, aby Twoje lepkie posty w recenzjach filmowych były wyświetlane inaczej i poza zwykłymi recenzjami filmów. O tak.:
Aby osiągnąć ten cel, pierwszą rzeczą, której potrzebujesz, jest szablon archiwum dla niestandardowego typu postu w ten sposób: archiwum-post-type.php
. Dowiedz się, jak utworzyć niestandardową stronę Archiwum typu post. Na przykład, jeśli masz niestandardowy typ postu film-recenzje
wtedy szablon strony archiwum powinien być archiwum-film-recenzje.php
. Jeśli nie masz szablonu, utwórz go. Wystarczy skopiować zawartość archiwum.php w katalogu Twojego motywu i wklej je do nowego pliku archive-your-post-type.php
.
Następnym krokiem jest dodanie tego kodu do motywu funkcje.php
plik:
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 ); // Przesuń do przodu, Po innych 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] ); } } // W razie potrzeby poszukaj więcej lepkich postów jeśli ( !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');
Powyższy kod przeniesie Twoje sticky posty na górę, a jeśli twój motyw jest używany post_class()
funkcji, a następnie dodałaby lepkość w klasie post.
Możesz stylizować swoje sticky posty za pomocą .lepki
klasa w arkuszu stylów. 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; }
Mamy nadzieję, że ten artykuł pomógł Ci dodać sticky posty w niestandardowych archiwach typu post. W przypadku pytań i opinii zostaw komentarz poniżej.
Źródło: Tareq Hasan