Cómo añadir entradas relacionadas en la sidebar de Genesis Framework

Tema en 'Desarrollo web' iniciado por SanMaster, 27 Nov 2023.

Etiquetas:
  1. SanMaster

    SanMaster Administrator Miembro del equipo

    Insertar CODE, HTML o PHP:
    // Función para obtener artículos relacionados basados en etiquetas
    function obtener_articulos_relacionados() {
        global $post;
        $tags = wp_get_post_tags($post->ID);
    
        if ($tags) {
            $tag_ids = wp_list_pluck($tags, 'term_id');
            $current_post_id = $post->ID;
    
            $args = array(
                'tag__in' => $tag_ids,
                'posts_per_page' => 5,
                'ignore_sticky_posts' => 1
            );
    
            $related_posts = new WP_Query($args);
            $output = '';
    
            if ($related_posts->have_posts()) {
                $output .= '<h3 class="related-posts">Artículos relacionados</h3><ul>';
                while ($related_posts->have_posts()) {
                    $related_posts->the_post();
    
                    // Excluir la entrada actual
                    if ($post->ID !== $current_post_id) {
                        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
                    }
                }
                $output .= '</ul>';
            }
            wp_reset_postdata();
    
            return $output;
        }
    }
    
    // Widget personalizado para mostrar artículos relacionados en la barra lateral
    class Custom_Related_Posts_Sidebar_Widget extends WP_Widget {
        function __construct() {
            parent::__construct(
                'custom_related_posts_sidebar_widget',
                'Artículos Relacionados (Sidebar)',
                array('description' => 'Muestra artículos relacionados en la barra lateral.')
            );
        }
    
        public function widget($args, $instance) {
            if (is_single()) {
                echo $args['before_widget'];
                echo $args['before_title'] . '' . $args['after_title'];
    
                // Muestra los artículos relacionados en la barra lateral
                echo obtener_articulos_relacionados();
    
                echo $args['after_widget'];
            }
        }
    }
    
    function register_custom_related_posts_sidebar_widget() {
        register_widget('Custom_Related_Posts_Sidebar_Widget');
    }
    
    add_action('widgets_init', 'register_custom_related_posts_sidebar_widget');
    

    Este código personalizado utiliza la función wp_get_post_tags() para recuperar las etiquetas del artículo actual, y luego utiliza la taxonomía de etiquetas para encontrar otros artículos que compartan las mismas etiquetas. Si no encuentra posts relacionados, no muestra nada.

    Lo estoy probando y funciona aceptablemente escogiendo entradas relacionadas.

    Añade este código al functions.php de tu child theme y luego ya deberías ver el widget Articulos relacionados en tu dashboard que podrás añadirlo.
     
    Última edición: 27 Nov 2023
  2. SanMaster

    SanMaster Administrator Miembro del equipo

    Insertar CODE, HTML o PHP:
    function custom_related_posts() {
        global $post;
        $tags = wp_get_post_tags( $post->ID );
        if ( $tags ) {
            $tag_ids = array();
            foreach( $tags as $individual_tag ) $tag_ids[] = $individual_tag->term_id;
            $args = array(
                'tag__in' => $tag_ids,
                'post__not_in' => array( $post->ID ),
                'posts_per_page' => 3,
                'ignore_sticky_posts' => 1
            );
            $related_posts = new WP_Query( $args );
            if ( $related_posts->have_posts() && is_single()) {
                echo '<h3 class="related-posts">También te puede gustar:</h3><ul>';
                while ( $related_posts->have_posts() ) {
                    $related_posts->the_post(); ?>
                    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                <?php }
                echo '</ul>';
            }
            wp_reset_postdata();
        }
    }
    add_action( 'genesis_after_entry_content', 'custom_related_posts' );
    
    Y este código añade los mismos posts relacionados con la misma lógica de arriba pero debajo de la entrada.
     
  3. SanMaster

    SanMaster Administrator Miembro del equipo

    Aclaro que esto no es suficiente para igualar la calidad de posts relacionados que ofrecen plugins como Contextual Related Posts de WebberZone. Este plugin es brutal para ello porque como su nombre dice entiende el contexto del post para ofrecer contenido relacionado. Este código es pobre respecto del plugin, pero no se puede obtener mucho más solo simplemente añadiendo un fragmento de código.
     

Compartir esta página