Рабочие будни

Архивы

Archive for ноября 3, 2008

Лечим Show Top Commentators

Понедельник, ноября 3, 2008

Плагин Show Top Commentators для WordPress некорректно обрезает имена комментаторов. Как оказалось он не способен правильно работать с текстом utf8 отличным от латиницы. Но всё поправимо. Открываем файл show_top_commentators.php

Находим строки:

function ns_substr_ellipse($str, $len) {
if(mx_strlen($str, 'utf-8') > $len) {
$str = mb_substr($str, 0, $len-3, 'utf-8') . "...";
}
return $str;
}

И заменяем их на эти:

function ns_substr_ellipse($str, $len) {
if ( iconv_strlen( $str, 'utf-8' ) > $len ) $str = iconv_substr( $str, 0, $len, 'utf-8' ). "...";
return $str;
}

P.S. Багфикс отправил автору, поди исправит в следующей версии...

Оптимизация pagenavi

Понедельник, ноября 3, 2008

Прочитав пост уважаемого Жомарта (после увидев статью Ярослава Бирзул) и посмотрев функционал navi.php, решил внести свои 5ть копеек.

В итоге взял функцию пагинации из темы уважаемого www.acosmin.com и чуток доработал.

Получилось вот что:

function wp_pagenavi2() {
global $paged, $wp_query;
$pages_to_show = 5; //сколько ссылок делать по сторонам
$max_page = $wp_query->max_num_pages;
if($max_page>1){
if(empty($paged)) {
$paged = 1;
}
$prelabel  = '<strong>&amp;laquo;</strong>';
$nxtlabel = '<strong>&amp;raquo;</strong>';
$half_pages_to_show = round($pages_to_show/2);

if($max_page > 1) {
echo "$before <div class='Nav'><span>Стр. ($max_page): </span>";
if ($paged >= ($pages_to_show-1)) {
echo '<a href="'.get_pagenum_link().'">&amp;laquo; Первая</a> ... ';
}
previous_posts_link($prelabel);
for($i = $paged — $half_pages_to_show; $i  <= $paged + $half_pages_to_show; $i++) {
if ($i >= 1 &amp;&amp; $i <= $max_page) {
if($i == $paged) {
echo "<strong class='on'>$i</strong>";
} else {
echo ' <a href="'.get_pagenum_link($i).'">'.$i.'</a> ';
}
}
}
next_posts_link($nxtlabel, $max_page);
if (($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.get_pagenum_link($max_page).'">Последняя &amp;raquo;</a>';
}
echo "<div class='NavEnd'></div></div> $after";
}
}
}

Вызывается оно просто:

<?php if(function_exists('wp_pagenavi2')) { wp_pagenavi2(); } ?>

Кода не намного больше, но есть некоторые полезные детали.

Отличия от navi.php: возможность перемещения на пред. и след. страницу.