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 Tipos de publicaciones adhesivas personalizadas plugin. Después de activar el plugin, ir 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.

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 plugin 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 movie-reviews entonces su plantilla de página de archivo debería 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 la carpeta de tu tema. functions.php expediente:


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 fijas a la parte superior, y si su tema está usando post_class() función, luego agregaría pegajoso en la clase de publicación.

Puedes diseñar tus publicaciones fijas 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

.

Fuente: wpbeginner

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *