Нотатки вебмайстра

Ще одна функція, яка виводить останні коментарі вашого сайту в будь-якому місці і яка по суті є міксом кількох готових рішень з блогосфери. Я “допиляв” її, додавши всі можливі (як на мене) варіанти контенту, який може захотітися вивести. А то зазвичай то дата не виводилася (або виводилася, але в якомусь нелюдському форматі) то ще щось…

function mixa_recent_comments($count = 2, $echo = true, $comment_len = 35){
    global $wpdb;
    $sql = "SELECT DISTINCT *
        FROM $wpdb->comments
        LEFT OUTER JOIN $wpdb->posts ON ( $wpdb->comments.comment_post_ID = $wpdb->posts.ID )
        WHERE comment_approved = '1'
        AND comment_type = ''
        AND post_password = ''
        ORDER BY comment_date_gmt DESC
        LIMIT $count";
    $comments = $wpdb->get_results($sql);
    $out = "n";
    foreach($comments as $comment){

// розмітку наведено згідно сайту, для якого було написано цю функцію. Сподіваюсь, вам буде нескладно розібратись і змінити під свою верстку

$tpl = '<p class="gray"><a>comment_post_ID ) . '#comment-' . $comment-&gt;comment_ID.'"&gt;'.$comment-&gt;comment_author.'</a><br /> к статье <a>comment_post_ID).'/#comment-'.$comment-&gt;comment_ID.'"&gt;'.$comment-&gt;post_title.'</a><br /> написал(а):</p><p>'.strip_tags(mb_substr(apply_filters('get_comment_text', $comment-&gt;comment_content), 0, $comment_len)).'</p> <span class="date">'.comm_date($comment-&gt;comment_date_gmt).'</span>';
        $out .= "nt".'<div class="cmnt">'.$tpl.'</div>';
    }
    $out .= "n";
    if ($echo) echo $out;  
        else return $out;
}
function comm_date($time){
    $in = array('-',':');$on = ' ';$time = str_replace($in,$on,$time);
    list($Y,$M,$D, $h, $m, $s) = sscanf($time, '%s %s %s %s %s %s');

/* Оскільки все взято прямо з сайту, для якого це писалося, то дати на російській. Це вже точно не складно переписати :) */
    $month = array(
          '01'=&gt;'января',
          '02'=&gt;'февраля',
          '03'=&gt;'марта',
          '04'=&gt;'апреля',
          '05'=&gt;'мая',
          '06'=&gt;'июня',
          '07'=&gt;'июля',
          '08'=&gt;'августа',
          '09'=&gt;'сентября',
          '10'=&gt;'октября',
          '11'=&gt;'ноября',
          '12'=&gt;'декабря'
        );
    return "$D ".$month[$M]." $Y года в $h:$m";
}
Read more

Взагалі для виводу на сторінки з записами частин постів я зазвичай використовую тег <!–more–>, але в процесі роботи над одним з сайтів довелося трішки шаманити для того, аби виводити анонси (цитати, прев’ю… – називайте як завгодно) записів з суворо лімітованою кількістю слів чи символів. В інтеренеті вистачає рішень, але є один ньюанс – функції з англомовних форумів не враховують того, що кирилиця і латиниця рахуються по-різному (саме тому люди люблять писати смс’ки латиницею – більше влазить 🙂 ).

Отже, моя вдосконалена і універсальна функція:

function excerpt($limit) {
$excerpt = get_the_excerpt(); // отримуємо цитату
$excerpt = strip_shortcodes($excerpt); // очищаємо від шорткодів
$excerpt = strip_tags($excerpt); // очищаємо від тегів
  if (iconv_strlen($excerpt, 'UTF-8')&gt;=$limit) {
    $the_str = mb_substr($excerpt, 0, $limit). "...";
  } else {
  $the_str = $excerpt;
  }
return $the_str;
}

Continue reading Витяг/цитата/прев’ю (excerpt) посту з обмеженням кількості знаків/слів

Read more