Cómo mostrar publicaciones relacionadas por categoría o tipo de publicación personalizada

26 jun 2014, 17:17:15
Vistas: 15.1K
Votos: 1

Estoy buscando la mejor manera de crear, probablemente, un tipo de publicación personalizada donde puedas filtrar en las categorías relacionadas con ese tipo de publicación personalizada en la barra lateral.

Aquí está el sitio web en el que estoy trabajando actualmente. Originalmente los perfiles de estudiantes y donantes deberían ser algún tipo de publicación o categoría que pueda actualizarse dinámicamente cuando se crea un nuevo perfil. Así que Salud & Ciencia, Éxito Estudiantil y Comunidad Creativa tienen su propio conjunto de perfiles específicos.

Digamos que John Doe es un nuevo perfil de estudiante para Éxito Estudiantil, puedo etiquetarlo para que aparezca solo en esa página y al ver su publicación individual tengo problemas para mostrar las categorías o perfiles que están relacionados, en este caso Éxito Estudiantil. Entonces al ver el perfil de John Doe, los otros perfiles bajo éxito estudiantil deberían aparecer listados en la barra lateral.

Noté que WordPress comparte el archivo de plantilla single.php, así que la barra lateral que tengo para el archivo single.php se está usando para los perfiles, lo cual no queremos.

En general, si revisas Salud & Ciencia, Éxito Estudiantil y Comunidad Creativa, estoy buscando una configuración como esa pero en lugar de un proceso de 4 pasos que el cliente tiene que hacer al subir un nuevo perfil, busco solo un proceso de un paso.

Mi configuración actual es que agregas el nuevo perfil como una página, luego vas al área de menús en el panel y agregas el nuevo perfil al menú.

Mi código actual de plantilla de página.

7
Comentarios

Así que básicamente lo que deseas es que la barra lateral que está en single.php detecte la publicación que se está mostrando en la plantilla de página y use una categoría o tipo de publicación para determinar qué perfiles/publicaciones relacionados mostrar. ¿Entonces actualmente Health & Science, Student Success y Creative Community son solo páginas con plantillas en lugar de un tipo de publicación personalizado?

RachieVee RachieVee
26 jun 2014 18:08:31

Sí. He estado investigando las declaraciones condicionales que usa WordPress pero no logro entender cómo hacer que lea esa página y muestre las publicaciones relacionadas.

jose jose
26 jun 2014 20:15:28

Ok, dame un poco de tiempo para intentar imitar lo que necesitas en una instalación de WordPress mía y veré qué puedo ofrecerte.

RachieVee RachieVee
27 jun 2014 17:32:22

Aprecio tu ayuda @RachieVee. Si empieza a ser demasiado problema, no tienes que preocuparte por ello. ¡Gracias!

jose jose
27 jun 2014 18:03:33

Vaya hombre, jaja, sí, me está tomando un tiempo, pero si no te importa que no proporcione código, al menos puedo intentar orientarte en la dirección correcta. Veo en tu plantilla que estás consultando publicaciones con una categoría: ¿por qué no crear un nuevo bucle en tu área de Perfiles de Donantes que obtenga publicaciones por esa categoría y liste los enlaces (asumiendo que la categoría es algo como Ciencias de la Salud o una de tus tres secciones)? O puedes usar metadatos de publicación en tus perfiles si no quieres extraer una categoría para un menú creado con un bucle get_posts. ¿Siento que no he tenido sentido? Déjame saber.

RachieVee RachieVee
27 jun 2014 18:21:07

No hay problema, hombre. Tengo una experiencia decente en codificación con WordPress. Mi problema es que si estoy usando la función de publicación en WordPress y configuro categorías específicas para esos perfiles, WordPress usa la plantilla single.php para todas las publicaciones. Así que la publicación en Noticias y Eventos tendrá la misma barra lateral que no quiero. Quiero que la barra lateral de Noticias y Eventos se mantenga como está ahora, pero que muestre las publicaciones relacionadas para los perfiles de publicaciones. Así que estoy tratando de averiguar cómo leer dinámicamente la categoría de la página actual para mostrar las categorías relacionadas en la barra lateral izquierda. A veces siento que no tengo sentido, jaja.

jose jose
27 jun 2014 20:39:16

Mmm, ¿qué tal si manipulas la clase del body si aún no muestra la categoría como una clase? Podrías usarla como medio para detectar la categoría en tu barra lateral y controlar la salida de la barra lateral verificando esa clase de categoría en el body. Tenía la impresión de que tus perfiles se mostraban en una página, así que ¿no serían solo las publicaciones individuales las que usarían single.php? Supongo que también depende de tu tema...

RachieVee RachieVee
30 jun 2014 07:06:49
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 2
2
<?php
// Obtener posts relacionados de la misma categoría
$related = get_posts( array( 
    'category__in' => wp_get_post_categories($post->ID), 
    'numberposts' => 5,
    'post_type' => 'noticias', 
    'post__not_in' => array($post->ID) 
) );

if( $related ) foreach( $related as $post ) {
    setup_postdata($post); ?>
        <li>
        <?php  the_post_thumbnail('thumbnail', array('alt' => 'Miniatura de ' . get_the_title(), 'title' => 'Miniatura de ' . get_the_title())); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Ver más sobre <?php the_title(); ?>"><?php the_title(); ?></a>
        </li>

<?php }
wp_reset_postdata(); ?>
9 sept 2014 07:14:07
Comentarios

¿Cómo responde esto a la pregunta?

Rarst Rarst
9 sept 2014 09:56:50

Esto sí funcionó para mí...

rwzdoorn rwzdoorn
15 jul 2015 14:42:59
0

Primero debes hacer una consulta con una taxonomía personalizada o cualquier cosa que desees para mostrar tus publicaciones

  function related_posts_by_taxonomy( $post_id, $taxonomy, $args=array() ) {
        $query = new WP_Query();
        $terms = wp_get_object_terms( $post_id, $taxonomy );
    
        // Asegúrate de que tenemos términos de la publicación actual
        if ( count( $terms ) ) {
            $post_ids = get_objects_in_term( $terms[0]->term_id, $taxonomy );
            $post = get_post( $post_id );
            $post_type = get_post_type( $post );        
    
            $args = wp_parse_args( $args, array(
                    'post_type' => $type,
                    'post__in' => $post_ids,
                    'taxonomy' => $taxonomy,
                    'term' => $terms[0]->slug,
    
                ) );
            $query = new WP_Query( $args );
        }
    
        // Devuelve nuestros resultados en forma de consulta
        return $query;
    }

Para listar la salida puedes usar el siguiente código

    $related =  related_posts_by_taxonomy( $post->ID, 'service_category' );
                    while ( $related->have_posts() ): $related->the_post(); ?>
                    <li class="folk-grid__col all">
                                <img class="" data-src="<?php echo get_template_directory_uri(); ?>/images/icons-service/<?php $icon_service = get_post_meta( $post->ID, 'service_options_icons', true ); echo $icon_service; ?>.svg" alt="<?php echo get_the_title( $post->ID ); ?>" src="<?php echo get_template_directory_uri(); ?>/images/icons-service/<?php echo $icon_service; ?>.svg">
                                   <span><a href="<?php echo esc_url( get_permalink( $post->ID ) ); ?>"><?php echo get_the_title( $post->ID ); ?></a></span>
                                     <div>
                                       <a rel="nofollow" class="btn folk-button" style="top: 35%;width: 62%;padding: 10px;" href="<?php echo esc_url( get_permalink( $post->ID ) ); ?>">Consultar ahora</a>
                                     </div>
                               </li>
    endwhile; 
13 jul 2021 20:58:58