Soporte » Plugins y Hacks » Hacks » Arreglar shortcode para mostrar los posts más comentados

  • Resuelto link1921u

    (@link1921u)


    Buenas noches, he conseguido un shortcode para poder mostrar los 5 posts más comentados. El problema es que me gustaría filtrarlos por categoría, por ejemplo, que me muestre los post más comentados de la categoría «memes», pero no consigo hacerlo, os paso el código por si me podéis echar una mano y por si a alguien le sirve también:

    function st_popular_posts_shortcode( $atts, $content ) {
     $pop_posts = get_transient( 'st_popular_posts' );
     if( false === $pop_posts ) {
     $args = apply_filters( 'showcase_filter_popular_posts', array(
     'orderby' => 'comment_count',
     'posts_per_page' => 5,
     ) );
     $pop_posts = new WP_Query( $args );
     set_transient( 'st_popular_posts', $pop_posts, WEEK_IN_SECONDS );
     }
     $current_post_id = get_the_ID();
     ob_start(); ?>
     <div class="showcase-popular-posts">
     <div class="row">
     <?php if( $pop_posts->have_posts() ) {
     $count = 1;
     while ( $pop_posts->have_posts() ) : $pop_posts->the_post();
     global $post;
     if( $count <= 4 && get_the_ID() != $current_post_id ) {
     $class = array( 'blog-article', 'featured-article', 'col', 'col-xsmall-full', 'article-' . $count );
     $class[] = 'col-large-one-third';?>
     <article id="post-<?php the_ID(); ?>" <?php post_class( $class ); ?>>
     <div class="article-inner-wrapper">
     <div class="featured-image">
     <a href="<?php echo esc_url( get_permalink() ); ?>" rel="bookmark">
     <?php the_post_thumbnail(); ?>
     </a>
     </div>
     <div class="entry-wrapper">
     <header class="entry-header">
     <?php
     the_title( '<h4 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h4>' ); ?>
     </header><!-- .entry-header -->
     <footer class="entry-footer">
     </footer><!-- .entry-footer -->
     </div><!-- .entry-wrapper -->
     </div><!-- .article-inner-wrapper -->
     </article><!-- #post-## -->
     <?php $count++;
     }
     endwhile;
     } ?>
     </div><!-- .row -->
     </div><!-- .showcase-popular-posts -->
     <?php $return = ob_get_clean();
     wp_reset_query();
     return $return;
     }
    add_shortcode( 'popular_posts', 'st_popular_posts_shortcode' );
    • Este debate fue modificado hace 4 meses por link1921u.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • Moderador almendron

    (@almendron)

    En los argumentos de la consulta añade el correspondiente a la categoría:

    https://developer.wordpress.org/reference/classes/wp_query/#category-parameters

    • Esta respuesta fue modificada hace 4 meses por almendron.
    Iniciador del debate link1921u

    (@link1921u)

    @almendron He probado con esto:

     $args = apply_filters( 'showcase_filter_popular_posts', array(
     'category_name' => 'memes',
     'orderby' => 'comment_count',
     'posts_per_page' => 5,
     ) );
     $pop_posts = new WP_Query( $args );
     set_transient( 'st_popular_posts', $pop_posts, WEEK_IN_SECONDS );
     }

    Y también con esto:

     $args = apply_filters( 'showcase_filter_popular_posts', array(
     'orderby' => 'comment_count',
     'posts_per_page' => 5,
     ) );
     $pop_posts = new WP_Query( array( 'category_name' => 'memes' ), $args );
     set_transient( 'st_popular_posts', $pop_posts, WEEK_IN_SECONDS );

    Pero nada funciona. ¿Me estoy dejando algo en el tintero?

    Moderador almendron

    (@almendron)

    En principio, la primera opción es la correcta.

    ¿Te funciona ciando no pones la categoría?

    Iniciador del debate link1921u

    (@link1921u)

    @almendron Sí, funciona sin categoría, pero no consigo que funcione con la categoría. Lo estoy haciendo en esta página, en el lado derecho:

    https://frentevermina.com/memes/

    Moderador almendron

    (@almendron)

    Prueba con

    $args = array(
    	'category_name' => 'memes',
    	'orderby' => 'comment_count',
    	'posts_per_page' => 5,
    );
    $pop_posts = new WP_Query( $args );
    Iniciador del debate link1921u

    (@link1921u)

    Nada, no funciona, está jodida la cosa jajaja

    Moderador almendron

    (@almendron)

    La primera letra del nombre la categoría: ¿es en mayúsculas?

    Iniciador del debate link1921u

    (@link1921u)

    Sí, pero lo acabo de intentar y nada.

    Me salen de otras categorías como «Juegos»

    Moderador almendron

    (@almendron)

    No he dicho nada:

    category_name (string) – use category slug.

    Es el slug lo que hay que poner.

    Yo iría comprobando a una las condiciones. Por ejemplo, dejas solo el número de posts y vas cambiando su número. La idea es comprobar que esté funcionando bien el código.

    Iniciador del debate link1921u

    (@link1921u)

    No consigo que funcione, te lo agradezco mucho Almendron por la ayuda prestada, pero voy a cerrar tema

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • Debes estar registrado para responder a este debate.