X

Cum să creezi un șablon de pagină pentru centralizarea comentariilor în WordPress

O modalitate de a crește implicarea vizitatorilor este să le recompensezi comentariile prin afișarea lor pe site-ul tău. În plus, poți prezenta și cei mai activi comentatori, legând înapoi către site-ul lor. Aici vom crea un șablon de pagină dedicat pentru a afișa acele comentarii și comentatori într-un singur loc.

Pe scurt, acest tutorial te va învăța cum să:

  1. creezi un șablon de pagină,
  2. folosești interogări SQL în codul tău pentru a prelua comentarii cu diverși parametri,
  3. creezi o secțiune a paginii vizibilă doar de către Administrator,
  4. adaugi suport pentru un plugin legat de comentarii.

Crearea unui șablon de pagină

Cel mai simplu mod de a crea un șablon de pagină este să deschizi fișierul page.php din tema ta, care va arăta aproximativ așa:

<?php get_header(); ?>
  <div id="content">
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post" id="post-<?php the_ID(); ?>">

    <h2 class="page_title"><?php the_title(); ?></h2>
      <?php the_content(); ?>
    </div>
    <?php comments_template(); ?>
    <?php endwhile; endif; ?>
  </div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Copiază și lipește conținutul fișierului page.php și adaugă acest lucru în partea de sus:

<?php
/*
Template Name: Comments Central
 */
?>

Și salvează-l. Nu există reguli stricte pentru denumirea unui fișier de șablon de pagină, dar este o idee bună să folosești un prefix pentru a-l face recunoscut, de exemplu, „pt-comment-central.php”. Nu am adăugat nimic în acest șablon de pagină, dar este funcțional și selectabil din zona de administrare pentru scrierea unei pagini noi.

Preluarea comentariilor

Pentru acest șablon de pagină, vom prezenta patru aspecte diferite ale comentariilor:

  • Comentarii recente,
  • Trackback-uri / Pingback-uri recente,
  • Cei mai activi comentatori,
  • Postări cu cele mai multe comentarii,

Mai întâi, vom face Comentarii recente:

<h3>Recent Comments</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>

Interogarea SQL cere toate comentariile aprobate sortate după dată (cele mai recente primele). $max este unde setăm numărul de comentarii de obținut, 7 în cazul nostru. Rezultatul codului de mai sus va fi o listă neordonată de comentarii recente:

Lista comentariilor recente

Cu puțin CSS putem îndrepta asta pentru a arăta mai bine:

#cc-recent-comments li {
  width: 100%;
  float: left;
  list-style-type: none;
}

#cc-recent-comments li img {
  float: left;
  margin-top: -5px;
}

Lista comentariilor recente cu CSS corespunzător

$template determină cum va fi scris textul efectiv; acesta se bazează pe formatul creat de WP Comment Remix și puteți urma acel link pentru a afla mai multe despre personalizarea acestuia (căutați „token-uri”).

Urmează Pingback-uri / Trackback-uri recente:

<h3>Recent Pingbacks / Trackbacks </h3>
<ul id="cc-recent-trackbacks">        
<?php
  $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>

Codul de mai sus este foarte similar cu cel pe care îl avem pentru Comentariile recente, singurele diferențe fiind că acum solicităm comentarii cu „comment_type” sub „pingback” / „trackback”, iar șablonul este, de asemenea, puțin diferit. Rezultat:

Lista pingback-urilor și trackback-urilor recente

Iată codul pentru Cei mai buni comentatori:

<h3>Top Commenters</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>

Nimic prea uimitor acolo. Observați totuși funcția cool get_avatar(), care vă va oferi Gravatar-ul oricărei persoane ale cărei adrese de e-mail le specificați. În acest caz, preluăm imaginea avatarului folosind adresa de e-mail a comentatorului. Cu CSS similar celui pe care îl avem pentru comentariile recente, putem obține acest rezultat:

#cc-top-commenters li {
  width: 100%;
  float: left;
  list-style-type: none;
}

#cc-top-commenters li img {
  float: left;
  margin-top: -5px;
}

Lista celor mai activi comentatori

Ultimul este Cele mai comentate postări:

<h3>Most Commented Posts</h3>
<ul id="cc-most-comments">
$sql = "SELECT p.*, c.comment_count FROM $wpdb->posts p INNER JOIN (SELECT comment_post_id, count(comment_ID) as comment_count from $wpdb->comments WHERE comment_approved='1' GROUP BY comment_post_id) c ON (c.comment_post_id=p.ID) ORDER BY c.comment_count DESC LIMIT $max";
$results = $wpdb->get_results($sql);

$template = '<a href="%pu">%pt</a> (%c comments)';

$echoed = 0;
foreach ($results as $row) {
  $tags = array('%pd','%pt','%pu','%c');
  $replacements = array($row->post_date,$row->post_title,get_permalink($row->ID),$row->comment_count);
  echo '<li>' . str_replace($tags,$replacements,$template) . '</li>';
  $echoed = 1;
}
if ($echoed==0)
    echo '<li>No commenter found.</li>';
?>
</ul>

Lista celor mai comentate postări

Și asta e tot. În continuare, vom adăuga un plus de interes adăugând câteva elemente pe care le poate vedea doar administratorul.

Informații doar pentru administratori

Pentru a afișa elemente doar pentru administratori, putem folosi acest fragment de cod de la WPCandy:

<?php 
global $user_ID; 
if( $user_ID ) :
  if( current_user_can('level_10') ) :
  // admin-only stuff here.
  endif;
endif; ?>   

Acum, în Panoul de control, avem o imagine rapidă a numărului total de comentarii ale unui site, aprobate, în așteptare și spam. Să replicăm acest lucru pentru șablonul nostru de pagină pentru un acces mai ușor, doar pentru administratori:

<?php 
  $num_comm = wp_count_comments();
?>
Total Comments: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?"><?php echo $num_comm->total_comments; ?></a>
Approved: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=approved"><?php echo $num_comm->approved; ?></a> 
Moderated: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=moderated"><?php echo $num_comm->moderated; ?></a>
Spam: <a href="<?php bloginfo('wpurl'); ?>/wp-admin/edit-comments.php?comment_status=spam"><?php echo $num_comm->spam; ?> </a>

Administrator

wp_count_comments() este o funcție utilă care returnează un tablou cu diverse numere statistice ale comentariilor. Adăugăm și linkuri către zona de administrare a comentariilor respective.

Adăugarea unor elemente deosebite

În final, să spunem că găsiți niște pluginuri cool legate de comentarii pe care doriți să le încorporați în acest șablon de pagină. În loc să adăugați mai mult cod, să adăugăm suport pentru el. Pentru acest exemplu, voi folosi pluginul Activity Sparks, care poate „afișa un grafic în stil „sparkline” în bara laterală pentru a indica activitatea postărilor și/sau comentariilor.” Sună grozav pentru mine.

De obicei, fișierul readme.txt al unui plugin vă va învăța cum să îl adăugați în fișierele temei dumneavoastră. În cazul nostru, codul poate fi de genul acesta:

<?php 
  if(function_exists('activitysparks')) {
    activitysparks(array('dataset'=>'legend','height_px'=>100,'width_px'=>600,'period'=>30, 'ticks'=>24));	
  }
?>     

pluginul ActivitySparks

function_exists() verifică dacă o anumită funcție este disponibilă; în cazul nostru, funcția activitysparks, care va fi disponibilă dacă pluginul a fost încărcat și activat. Dacă este acolo, afișăm graficul. Dacă nu, atunci șablonul nostru de pagină nu va afișa nimic (dar va funcționa în continuare perfect, fără erori).

Rezultat și Exemplu

Un exemplu al acestui șablon de pagină este disponibil aici. Acesta folosește codurile pe care le vedeți aici cu câteva modificări, în principal pentru a menține structura HTML consistentă cu restul site-ului web. Întregul cod pentru acel șablon de pagină este disponibil la Pastebin.

Credite și Lecturi Suplimentare

  • Codurile utilizate pentru a afișa diverse comentarii recente și de top sunt preluate din pluginul WP Comment Remix. Aruncați o privire la codul său pentru a afla mai multe lucruri legate de comentarii, cum ar fi excluderea comentariilor de administrator din topul comentatorilor sau cum să luați în considerare doar comentariile recente. $template pe care îl folosim pentru a formata ieșirea poate fi învățat mai multe de pe acea pagină, de asemenea.
  • Crearea propriului șablon de pagină pe WordPress Codex.
  • Tutorial despre afișarea conținutului doar pentru administratori pe WPCandy.
  • Comentarii   Lasă un răspuns

    1. bun

    2. Tutorial grozav, Hafiz!

      Și dacă nu mă înșel, acesta este primul guest post? dacă da, woot!
      Poate voi fi următorul 😛

    3. Cu siguranță sunt câteva lucruri aici pe care vreau să le implementez pe fotoblogul meu odată ce îl voi converti la WordPress. Mulțumesc!

      1. Salut Kim, grozav. Anunță-ne cum a mers odată ce îl implementezi.

    4. Idee grozavă, s-ar putea să implementez ceva asemănător pentru site-ul meu.

      Doar o informare: în loc să faci interogări brute, încearcă să folosești asta:

      include ( ABSPATH . ‘wp-admin/includes/template.php’ );
      _wp_get_comment_list( ‘approved’, false, 0, 20, 0, ‘comment’ );

      1. Salut Ptah, mă bucur că ți s-a părut util. De fapt, mă gândeam să implementez o pagină similară și aici, pentru că cred că este o modalitate bună de a „recompensa” comentatorii buni.

        Și mulțumesc pentru pontul despre interogările SQL brute. Presupun că ar putea înlocui, în esență, orice instanțe de cod de genul acesta?

        $sql = "SELECT p.*, ..."; // și așa mai departe
        $results = $wpdb->get_results($sql);

      2. Exact, _wp_get_comment_list() returnează un array cu toate comentariile, deci de acolo, pur și simplu ai rula o buclă foreach.

      3. Înveți ceva nou în fiecare zi. Voi analiza cu atenție acea funcție, mulțumesc Ptah 🙂

    Adaugă un comentariu

    Suntem bucuroși că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de confidențialitate, iar toate linkurile sunt nofollow. NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.

Lista de verificare pentru lansarea WordPress

Lista de verificare finală pentru lansarea WordPress

Am compilat toate elementele esențiale de verificare pentru lansarea următorului dvs. site WordPress într-o singură carte electronică la îndemână.
Da, trimite-mi eBook-ul gratuit!