Recientemente, uno de nuestros usuarios nos preguntó si era posible agregar publicaciones fijas a los archivos de tipos de publicaciones personalizadas. Por defecto, WordPress tiene la funcionalidad adhesiva disponible para las publicaciones, pero no para otros tipos de publicaciones. En este artículo, le mostraremos cómo agregar publicaciones fijas en los archivos de tipo de publicación personalizada de WordPress. Antes de seguir adelante, es probable que desee aprender a crear tipos de publicaciones personalizadas en WordPress.

Adición de publicaciones adhesivas 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, ve a Configuraciones »Lectura y desplácese hacia abajo a la sección Tipos de publicaciones personalizadas adhesivas. A continuación, debe elegir los tipos de publicaciones personalizadas en las que desea que se active esta opción.

Habilitación de publicaciones adhesivas para tipos de publicaciones personalizadas

Ahora lo que hemos hecho aquí es que hemos agregado funciones de publicaciones adhesivas a nuestros tipos de publicaciones personalizadas. Las publicaciones adhesivas en los tipos de publicaciones personalizadas se mostrarán en la página principal al igual que las publicaciones adhesivas regulares.

El problema es que, de forma predeterminada, WordPress solo muestra publicaciones adhesivas en la página de inicio. No muestra publicaciones adhesivas en las páginas de archivo.

Mostrar publicaciones adhesivas en archivos de tipos de publicaciones personalizadas

Supongamos que tiene un tipo de publicación personalizado para las Revisiones de películas con publicaciones adhesivas habilitadas utilizando el complemento que hemos mencionado anteriormente. Ahora desea que las publicaciones adhesivas en los tipos de publicaciones de reseñas de películas se muestren de forma diferente y además de las críticas de películas normales no adhesivas. Me gusta esto:

Mostrando una publicación adhesiva 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 . Obtenga información sobre cómo crear una página de archivo de tipo de publicación personalizada. Por ejemplo, si tiene un tipo de publicación personalizado críticas de cine entonces su plantilla de página de archivo debe ser archive-movie-reviews.php . Si no tienes una plantilla, crea una. Simplemente copie los contenidos de archive.php en el directorio de su tema y péguelos en un nuevo archivo archive-your-post-type.php .

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

function wpb_cpt_sticky_at_top ($ publicaciones) {
 
     // aplicarlo solo en los archivos
     if (is_main_query () && is_post_type_archive ()) {
         global $ wp_query;
 
         $ sticky_posts = get_option ('sticky_posts');
         $ num_posts = count ($ posts);
         $ sticky_offset = 0;
 
         // Encuentra las publicaciones adhesivas
         for ($ i = 0; $ i ID, $ sticky_posts)) {
                 $ sticky_post = $ posts [$ i];
 
                 // Eliminar pegajoso de la posición actual
                 array_splice ($ posts, $ i, 1);
 
                 // Mover al frente, después de otras cosas pegajosas
                 array_splice ($ posts, $ sticky_offset, 0, array ($ sticky_post));
                 $ sticky_offset ++;
 
                 // Eliminar la publicación de la matriz de posts pegajosos
                 $ offset = array_search ($ sticky_post-> ID, $ sticky_posts);
                 unset ($ sticky_posts [$ offset]);
             }
         }
 
         // Busca más publicaciones adhesivas si es necesario
         if (! empty ($ sticky_posts)) {
 
             $ stickies = get_posts (array (
                 'post__in' => $ sticky_posts,
                 'post_type' => $ wp_query-> query_vars ['post_type'],
                 'post_status' => 'publicar',
                 'nopaging' => true
             ));
 
             foreach ($ stickies as $ sticky_post) {
                 array_splice ($ posts, $ sticky_offset, 0, array ($ sticky_post));
                 $ sticky_offset ++;
             }
         }
 
     }
 
     devolver $ publicaciones;
 }
 
 add_filter ('the_posts', 'wpb_cpt_sticky_at_top');

 // Agregue una clase pegajosa en el título del artículo para diseñar entradas adhesivas de manera diferente

 function cpt_sticky_class ($ classes) {
 if (is_sticky ()):
 $ classes [] = 'sticky';
 devuelve $ clases;
 terminara si;
 devuelve $ clases;
 }
 add_filter ('post_class', 'cpt_sticky_class'); 

El código anterior movería tus publicaciones adhesivas a la parte superior, y si tu tema está usando post_class () función, entonces agregaría pegajoso en la clase de publicación.

Puedes diseñar tus publicaciones adhesivas usando .pegajoso clase en tu hoja de estilo. Ejemplo:

.sticky {
 color de fondo: #ededed;
 background-image: url ('http://example.com/wp-content/uploads/featured.png');
 background-repeat: no-repeat;
 posición de fondo: arriba derecha;
 } 

Diseñar publicaciones adhesivas

Esperamos que este artículo lo ayude a agregar publicaciones adhesivas en los archivos de tipo de publicación personalizada. Para preguntas y comentarios, por favor deje un comentario a continuación.

Fuente: Tareq Hasan