Небольшое предисловие. У меня реально очень много блогов… три, если быть точным, плюс один, где я не писал уже больше года. Если сложить общее количество записей, то получится что-то порядка 300 постов. Ходить и выискивать по блогам, обновлять все и следить за всем вместе мне не хочется. И я решил просто зарегистрировать новый домен и перенести все сюда.

В WordPress есть виджет Архивы, с помощью которого можно выводить список записей за определенный месяц (неделю, год и т.д.). По умолчанию данный виджет выводит всю информацию в один столбик. А мне надо в два. Как это сделать. Я не стал заморачиваться со всякими плагинами, а внес изменения непосредственно в код. Криво, но мне лень делать иначе.

Ищем и открываем файл wp-includes/general-template.php, там примерно на 935 строчке будет следующий код:

$afterafter = $after;
$ix = 0;
foreach ( (array) $arcresults as $arcresult ) {
	$url = get_month_link( $arcresult->year, $arcresult->month );
	/* translators: 1: month name, 2: 4-digit year */
	$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
	if ( $show_post_count )
		$after = ' ('.$arcresult->posts.')' . $afterafter;
	//$output .= get_archives_link($url, $text, $format, $before, $after);

	$ix++;
	if ( ($ix % 2) == 1 ) {
		$output .= get_archives_link($url, $text, "custom", "<li style="float:left;">", "</li>");
	} else {
		$output .= get_archives_link($url, $text, "custom", "<li style="float:right; width:50%;">", "</li>");
	}
}

Он отвечает за выборку месяцев, когда был создан хоть один пост, и вывод этих месяцев в виджет Архив. В результате этого кода, в переменной $output появляется массив строчек вида:

<li>ссылка на месяц</li>

Я выделил строчки, которые я добавил. В принципе, все тут понятно. Вводим переменную $ix, увеличиваем ее на 1 с генерацией каждой строчки. Делим по модулю на 2. Если есть остаток — добавляем стиль float:left, нет — float:right. Строчку 9 надо закомменитровать.

Это очень кривой и не оптимальный способ, т.к. мы игнорируем любые параметры, которые передаются функции wp_get_archives(). Гораздо правильнее было бы это реализовать через плагин.