← WordPress

Wordpress página central de comentários

Lida 1388 vezes

Offline

Nuno 
Administrador
Mensagens 7780 Gostos 216
Feedback +2

Troféus totais: 42
Trófeus: (Ver todos)
100 Poll Votes Level 7 Search Mobile User Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Estou a criar uma template para ter uma página central de comentários num blog. Quero para já ter o top de comentadores em cima e de seguida os últimos comentários.

Esta-me a dar um erro no top de comentadores que não estou a ver qual é...

Código: (php) [Seleccione]
<?php
/*
Template Name: comentarios
 */
?>

<?php get_header(); ?>
<div id="container">

<div id="content">
    
     <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

<h1 class="entry-title"><?php the_title(); ?></h1>

<div class="entry entry-content">
<h3>Top Comentadores</h3>
<ul id="cc-top-commenters">
<?php
$sql 
"SELECT comment_author, comment_author_url, comment_author_email, count(comment_ID) as comment_count FROM $wpdb->comments WHERE comment_approved = '1' AND comment_type not in ('trackback','pingback') GROUP BY comment_author, comment_author_url, comment_author_email ORDER BY comment_count DESC LIMIT $max";
$results $wpdb->get_results($sql);

$template '<a href="%au">%g %an</a> (%c comments)';

$echoed 0;
foreach (
$results as $row) {
    
$tags = array('%g','%au','%an','%c');
    
$replacements = array(get_avatar($row->comment_author_email,'32'),$row->comment_author_url,$row->comment_author,$row->comment_count);
    echo 
'<li>' str_replace($tags,$replacements,$template) . '</li>';
    
$echoed 1;
}
if (
$echoed==0)
    echo 
'<li>No commenter found.</li>';
?>

</ul>

<br />
<h3>Comentários Recentes</h3>
<ul id="cc-recent-comments">
<?php
  $max 
7// number item to get
  
global $wpdb;
  
$sql "SELECT c.*, p.post_title FROM $wpdb->comments c INNER JOIN $wpdb->posts p ON (c.comment_post_id=p.ID) WHERE comment_approved = '1' AND comment_type not in ('trackback','pingback') ORDER BY comment_date DESC LIMIT $max";
  
$results $wpdb->get_results($sql);

  
$template '%g <a href="%au">%an</a> on <a href="%pu#comment-%cid">%pt</a>';

  
$echoed 0;
  foreach (
$results as $row) {
    
$tags = array('%ct','%cd','%g','%pt','%pu','%au','%an','%cid');
    
$replacements = array($row->comment_title,$row->comment_date,get_avatar($row->comment_author_email,'32'),$row->post_title,get_permalink($row->comment_post_ID),$row->comment_author_url,$row->comment_author,$row->comment_ID);
    echo 
'<li>' str_replace($tags,$replacements,$template) . '</li>';
    
$echoed 1;
  }
  if (
$echoed==0)
      echo 
'<li>No comment found.</li>';
?>

</ul>
</div> <!--end .entry-->

</div> <!--end #post-->

</div><!--end #content-->

</div> <!--end #container-->
<?php get_sidebar(); ?>

<?php get_footer(); ?>

Output do erro:

Citar
WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1]
      SELECT comment_author, comment_author_url, comment_author_email, count(comment_ID) as comment_count FROM xr7n_comments WHERE comment_approved = '1' AND comment_type not in ('trackback','pingback') GROUP BY comment_author, comment_author_url, comment_author_email ORDER BY comment_count DESC LIMIT
    * No commenter found.
Offline

Nuno 
Administrador
Mensagens 7780 Gostos 216
Feedback +2

Troféus totais: 42
Trófeus: (Ver todos)
100 Poll Votes Level 7 Search Mobile User Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Resolvido, criei a função no functions.php da theme e adicionei na template, mais prático.