Włączanie sticky postów dla niestandardowych typów postów

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

Enabling sticky posts for custom post types

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

Showing a sticky post on a custom post type archive page

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;
}

Styling sticky posts

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

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd „nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…

Jak zainstalować WordPress lokalnie na komputerze Mac za pomocą MAMP

W artykule: Jak zainstalować MAMP na komputerze MacInstalacja WordPress na komputerze MacWypróbowanie…