In english Хотелка Об авторе

Небольшой хак для Wordpress 1.5.2, обрезающий ссылки на соседние посты до определённой длинны

В основном для Пепсимиста (извини за такую задержку, но в тот вечер по разным причинам руки не дошли, а потом, как всегда, времени не хватало), но может и ещё кого-нибудь заинтересует.

Wordpress – штука, конечно, хорошая, но когда автор склонен к сочинительству длинных заголовков, сслыки на предыдущий и последующий посты не всегда выглядят красиво, разваливаясь на несколько строк и пытаясь сдвинуть друг друга вниз. Ограничивать ширину дивов и получать две многострочных ссылки рядом – лучше, но всё равно некрасиво как-то.

Вот, что сделал я (сам Wordpress не пользуюсь, но поковырял его немного в поисках хорошего движка для многопользовательского блога и ради удовольствия).

Функции previous_post_link(..) и next_post_link(..) определены в файле wp-includes/templates-functions-links.php. Их и будем править, но чуть позже. Сначала добавим в конец wp-includes/templates-functions-general.php такую вот функцию:


function limit_string($string, $len)
{
	if(strlen($string) <= $len) return $string;
	
	$words = str_word_count($string, 2);

	$pos=0;
	foreach($words as $indx)
		if($indx<$len) $pos=$indx;

	if($pos == 0) $string = substr($string, 0, $len);
	else $string = substr($string,0,$pos);
	
	return rtrim($string, '!@#$^&*(;".,/?- ')."...";
}
Она сначала пытается разбить строку на слова, и обрезать её до $len символов «красиво», то есть не разрывая слова. Если не получается (а такое будет только если заголовок – одно длинное слово или что-нибудь вроде «очень-очень-...-очень длинный пост») – режет как получится.

Остаётся только чуть-чуть подправить фукнции, о которых я упоминал выше. Находим в каждой из них строки

$link = str_replace('%title', $title, $link); 
и исправляем их на
$link = limit_string(str_replace('%title', $title, $link), 30);
.

Наслаждайтесь. Значение 30 я подобрал эмпирически для дефолтной инсталляции Wordpress.

Update: Убрал из последней строки функции процент и закрывающую скобку.

Top

Категория: [code] Слова: wordpress
@lj

Комментарии Отключены