Отображаем похожие записи в WordPress

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

Есть два алгоритма для вывода похожих записей в WordPress: на основе рубрик или же на основе меток. На мой взгляд, вариант с использованием меток более удобен и практичен. Некоторые блоги на WordPress вообще не используют категории, кроме того использование меток дает большую гибкость для объединения похожих записей в одну смысловую группу.

Выводить список похожих записей мы будем исключительно в виде текстовых ссылок без изображений. Для этого необходимо добавить код из этой записи в файл functions.php вашего шаблона WordPress.

В зависимости от ваших потребностей, скрипт можно изменить под свои нужды: изменить количество отображаемых ссылок (строка 1), задать параметры сортировки (строка 18). По умолчанию похожие записи отображаются в случайном порядке, вы можете изменить параметры сортировки на одно из значений ниже:
rand — случайно;
title — по названию;
date — по дате публикации;
modified — по дате последнего изменения.

Для отображения похожих записей, необходимо добавить в файл content.php код вызова нашей функции.

<?php do_related_posts(); ?>

Теперь осталось подстроить отображение блока похожих записей под общий дизайн шаблона WordPress. Для этого необходимо добавить свои свойства в следующие селекторы:

.related-posts {
   /* ... */
}
.related-posts h4 {
   /* ... */
}
.related-posts ul li {
   /* ... */
}
.related-posts a {
   /* ... */
}

Изменяем title страниц в WordPress

В WordPress по умолчанию для каждой страницы в содержимое тега title дописывается название сайта. С точки зрения SEO это не всегда правильно. Изменить формат тега title можно при помощи различный SEO плагинов. Для простых случаев можно обойтись редактированием файла functions.php, добавив в него следующий код:

function theme_name_wp_title( $title, $sep ) {
	global $page, $paged;

	if ( is_home() || is_front_page() ) {
		$title = get_bloginfo( 'name', 'display' ) . ' - ' . get_bloginfo( 'description', 'display' );
	}
	if ( is_page() ) {
		$title = get_the_title();
	}
	if ( is_single() ) {
		$title = get_the_title();
	}
	if ( is_category() ) {
		$title = single_cat_title( 'Рубрика: ', false );
	}
	if ( is_archive() && !is_category()) {
		$title = 'Месяц: ' . get_the_date( _x( 'F Y', 'monthly archives date format', 'twentyten' ) );
	}
	if ( is_search() ) {
		$title = 'Результаты поиска: ' . get_search_query();
	}
	if ( is_tag() ) {
		$title = single_tag_title('Метка: ', false);
	}
	if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
		$title .= '. Страница ' . $paged . '.';
	}
	return $title;
}
add_filter( 'pre_get_document_title', 'theme_name_wp_title', 10, 2 );

Начиная с WordPress 4.4 функция wp_title() упразднена, вместо нее необходимо использовать pre_get_document_title.

Неправильное отображение Gist в Twenty Fifteen

При использовании стандартной темы WordPress Twenty Fifteen, блоки кода вставленные из Gist отображаются некорректно. Для исправления проблемы необходимо добавить в таблицу стилей темы:

.gist table {
	table-layout: auto !important;
}

Транслитерация ссылок в WordPress

Небольшой мод классического плагина транслитерации ссылок в WordPress. Список изменений:

  • добавлена транслитерация имен загружаемых изображений,
  • из таблицы транслитерации удалены буквы в верхнем регистре,
  • транслитерация выполняется по стандарту ISO 9:1995.