Cómo mostrar publicaciones relacionadas por categoría o tipo de publicación personalizada
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ú.
<?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(); ?>

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;
