Hur man lÀgger till klibbiga inlÀgg i WordPress Anpassade inlÀggstypsarkiv

Enabling sticky posts for custom post types

Nyligen frÄgade en av vÄra anvÀndare oss om det var möjligt att lÀgga till klibbiga inlÀgg i anpassade posttyparkiv. Som standard har WordPress den klibbiga funktionen tillgÀnglig för inlÀgg, men inte för andra inlÀggstyper. I den hÀr artikeln visar vi dig hur du lÀgger till klibbiga inlÀgg i WordPress anpassade inlÀggstyparkiv. Innan vi gÄr vidare skulle du förmodligen vilja lÀra dig att skapa anpassade inlÀggstyper i WordPress.

LÀgga till klibbiga inlÀgg i anpassade inlÀggstyper

Det första du behöver göra Àr att installera och aktivera plugin Sticky Custom Post Typer. Efter att ha aktiverat plugin, gÄ till InstÀllningar »LÀsning och blÀddra ner till avsnittet Sticky Custom Post Typer. DÀrefter mÄste du vÀlja de anpassade inlÀggstyperna dÀr du vill att Stick Detta alternativ ska aktiveras.

Nu har vi gjort hÀr att vi har lagt till klibbiga inlÀgg i vÄra anpassade inlÀggstyper. Klibbiga inlÀgg i anpassade inlÀggstyper visas pÄ första sidan precis som vanliga klibbiga inlÀgg.

Problemet Àr att WordPress som standard bara visar klibbiga inlÀgg pÄ hemsidan. Det visar inte klibbiga inlÀgg pÄ arkivsidor.

Visar klibbiga inlÀgg i anpassade inlÀggstyparkiv

LÄt oss anta att du har en anpassad inlÀggstyp för filmrecensioner med klibbiga inlÀgg aktiverade med det plugin som vi har nÀmnt ovan. Nu vill du att dina klibbiga inlÀgg i inlÀggstyper för filmrecensioner ska visas annorlunda och ovanpÄ icke-klibbiga vanliga filmrecensioner. SÄ hÀr:

Visar ett klibbigt inlÀgg pÄ en anpassad arkivsida för inlÀggstyp

För att uppnÄ detta mÄl Àr det första du behöver en arkivmall för din anpassade inlÀggstyp sÄ hÀr: arkiv-post-typ.php. LÀr dig hur du skapar en anpassad arkivsida för inlÀggstyp. Till exempel, om du har en anpassad posttyp filmrecensioner, ska din arkivsidesmall vara arkivfilmrecensioner.php. Om du inte har en mall, skapa en. Kopiera bara innehÄllet i archive.php i ditt temas katalog och klistra in dem i ett nytt filarkiv-din-post-typ.php.

NÀsta steg Àr att lÀgga till den hÀr koden i ditt temas funktioner.php-fil:


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


OvanstÄende kod skulle flytta dina klibbiga inlÀgg till toppen, och om ditt tema anvÀnder post_class () -funktionen, skulle det lÀgga klibbigt i postklassen.

Du kan utforma dina klibbiga inlÀgg genom att anvÀnda .sticky class i ditt stilark. Exempel:


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

Styling klibbiga inlÀgg

Vi hoppas att den hÀr artikeln hjÀlpte dig att lÀgga till klibbiga inlÀgg i anpassade inlÀggstyparkiv. För frÄgor och feedback vÀnligen lÀmna en kommentar nedan.

KĂ€lla: Tareq Hasan