Cómo agregar publicaciones fijas en archivos de tipo de publicación personalizados de WordPress

Recientemente, uno de nuestros usuarios nos preguntó si era posible agregar publicaciones fijas a archivos de tipo de publicación personalizados. De forma predeterminada, WordPress tiene la funcionalidad adhesiva disponible para publicaciones, pero no para otros tipos de publicaciones. En este artículo, le mostraremos cómo agregar publicaciones fijas en archivos de tipo de publicación personalizada de WordPress. Antes de seguir adelante, probablemente le interese aprender a crear tipos de publicaciones personalizadas en WordPress.

Agregar publicaciones fijas en tipos de publicaciones personalizadas

Lo primero que debe hacer es instalar y activar el complemento Sticky Custom Post Types. Después de activar el complemento, vaya a Configuración »Lectura y desplácese hacia abajo hasta la sección Tipos de publicaciones personalizadas fijas. A continuación, debe elegir los tipos de publicaciones personalizadas donde desea que se habilite la opción Stick This.

Habilitación de publicaciones fijas para tipos de publicaciones personalizadas

Ahora, lo que hemos hecho aquí es que hemos agregado la función de publicaciones fijas a nuestros tipos de publicaciones personalizadas. Las publicaciones fijas en tipos de publicaciones personalizadas se mostrarán en la página principal al igual que las publicaciones fijas normales.

El problema es que, por defecto, WordPress solo muestra publicaciones fijas en la página de inicio. No muestra publicaciones fijas en páginas de archivo.

Visualización de publicaciones fijas en archivos de tipo de publicación personalizados

Supongamos que tiene un tipo de publicación personalizada para Reseñas de películas con publicaciones fijas habilitadas mediante el complemento que hemos mencionado anteriormente. Ahora desea que sus publicaciones adhesivas en los tipos de publicaciones de reseñas de películas se muestren de manera diferente y además de las reseñas de películas regulares no adhesivas. Como esto:

Mostrar una publicación fija en una página de archivo de tipo de publicación personalizada

Para lograr este objetivo, lo primero que necesita es una plantilla de archivo para su tipo de publicación personalizada como esta: archive-post-type.php. Aprenda a crear una página de archivo de tipo de publicación personalizada. Por ejemplo, si tiene un tipo de publicación personalizada, reseñas de películas, la plantilla de su página de archivo debe ser archive-movie-reviews.php. Si no tiene una plantilla, cree una. Simplemente copie el contenido de archive.php en el directorio de su tema y péguelo en un nuevo archivo archive-your-post-type.php.

El siguiente paso es agregar este código en el archivo functions.php de su tema:

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

El código anterior movería sus publicaciones adhesivas a la parte superior, y si su tema usa la función post_class (), entonces agregaría adhesivas en la clase de publicación.

Puede diseñar sus publicaciones adhesivas usando .sticky class en su hoja de estilo. Ejemplo:

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

Diseñar publicaciones adhesivas

Esperamos que este artículo le haya ayudado a agregar publicaciones fijas en archivos de tipo de publicación personalizados. Si tiene preguntas y comentarios, deje un comentario a continuación.

Fuente: Tareq Hasan