Отключить CSS/JS в теме WordPress

В процессе доработки или оптимизации темы оформления WordPress, может возникнуть необходимость отключить загрузку неиспользуемых CSS или JS-файлов внутри HTML-документа. Как правило, в данной ситуации ограничиваются самым простым вариантом решения данного вопроса — удалением из шаблона функций wp_enqueue_style или wp_enqueue_skript, отвечающих за регистрацию стилей и скриптов в WordPress.

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

В WordPress можно удалять из очереди и отменять регистрацию стилей и скриптов при помощи функций:

  • wp_deregister_script()
  • wp_deregister_style()
  • wp_dequeue_script()
  • wp_dequeue_style()

Они отличаются тем, что wp_dequeue удаляет фалы из очереди на вывод, а wp_deregister отменяет регистрацию файла, после чего можно повторно зарегистрировать файл с ранее используемым  идентификатором.

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

Рассмотрим использование функции на примере отключения загрузки шрифтов Google Web Fonts:

function wp_dequeue_google_fonts() {
	wp_dequeue_style( 'twentyfifteen-fonts' );
}
add_action( 'wp_enqueue_scripts', 'wp_dequeue_google_fonts', 20 );

В примере выше: в качестве параметра для работы функции wp_dequeue_style() мы указали идентификатор twentyfifteen-fonts ранее зарегистрированного CSS.

Имя идентификатора можно найти в коде функции подключения скрипта wp_enqueue_script().

Следует отметить, для отключения CSS или JS файлов в теме WordPress, вызов функции wp_dequeue_google_fonts должен происходить после вызова функции wp_enqueue. Поэтому для отключения CSS или JS файлов в теме WordPress, лучше всего использовать код функции в конце файла functions.php.

Отображаем похожие записи в 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.