Je veux le commentaire le plus récent et la vignette du billet de blog dans WordPress

Publié par Jean-Michel le

J’essaie de créer un shortcode qui devrait afficher le commentaire le plus récent (un seul), le nom de l’auteur du commentaire et la vignette de l’article de blog sur lequel ce commentaire est publié, que l’article de blog soit le plus récent ou le plus ancien. Le commentaire doit être le plus récent.

J’ai fait le code mais il ne tire pas le commentaire le plus récent.

function ct_comment_block(){

  $query = new WP_Query(
      array(
          'post_type' => 'post',
          'post_status' => 'publish',
          'posts_per_page' => 1,
          'tax_query' => array(
                  'taxonomy' => 'calendar_category',
                  'field' => 'slug'
              ),
          'order' => 'ASC',
          'orderby' => 'menu_order'
      )
  );
$str = '';
$thumb_id = get_post_thumbnail_id();

$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'thumbnail-size', true);`$thumb_url = $thumb_url_array[0];
while ($query->have_posts()):
$query->the_post();

$str .= '<div class="comment-main">
          <div class="comment-image-wrapper"><a href="'.get_the_permalink().'">'.get_the_post_thumbnail().'</a></div>
        <div class="comment-wrapper">
        <h3>'.comment_sender().'</h3>
        <h5>Traveler Hobbyist</h5>
        <p>'.real_body().'</p>


        </div>';
$str .= '</div>';


endwhile;


return $str;

}

add_shortcode('show_comment' , 'ct_comment_block');

Solution n°1 trouvée

J’ai écrit la plupart de mes réponses dans les commentaires du code.

Mais j’utiliserais une $wpdbrequête pour récupérer le commentaire le plus récent, obtenir l’identifiant du message associé et travailler à partir de là.

J’espère que cela a du sens pour vous.

<?php
add_shortcode('show_comment' , 'ct_comment_block');
function ct_comment_block(){
    if(!is_admin()){
        global $wpdb;
        $query = "SELECT * from $wpdb->comments WHERE comment_approved= '1' ORDER BY comment_date DESC LIMIT 0 ,1";    // This shows the newest comment
        $comments = $wpdb->get_results($query);
        $strToReturn = '';
        if ($comments) {
            $strToReturn .= '<div class="someSortOfWrappingClass">';
            foreach ($comments as $comment) {
                //Use $comment->comment_post_ID for the post_id like so
                $link = get_permalink($comment->comment_post_ID);
                //but you can check what else is inside $comment - like $comment->comment_author_email etc.
                //Simply gather your html here
            } //End of foreach
        $strToReturn .= '</div>';
        } //End of IF
        return $strToReturn;
    } else {
        return;
    }

}

Solution n°2 trouvée

Essayez, cela peut vous aider à obtenir les commentaires les plus récents

$recentcomments = get_comments( array(
    'number'      => 10, // fetch number of comments.
    'status'      => 'approve', //  status approved comments.
    'post_status' => 'publish' // post status published comments.
) );

if ( $recentcomments ) {
    foreach ( (array) $recentcomments as $comment ) {

        echo '<a href="' . esc_url( get_comment_link( $comment ) ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a>';

    }
}

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *