Плюшки для Wordpress

Изменяем WordPress под себя

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

Свой виджет в любой части страницы

Добавляем в functions.php следующее:

function arphabet_widgets_init() {
	register_sidebar( array(
		'name'          => 'Описание виджета',
		'id'            => 'nazvanie_vidzheta',
		'before_widget' => '

<div>',
		'after_widget'  => '</div>


',
		'before_title'  => '

<h2 class="rounded">',
		'after_title'   => '</h2>


',
	) );
}
add_action( 'widgets_init', 'arphabet_widgets_init' );

Вставляем в нужном месте в файле темы:

<?php dynamic_sidebar( 'nazvanie_vidzheta' ); ?>

Удаляем «?» в скриптах и стилях

В конце каждого файла стилей или скрипта WordPress добавляет ?ver= Это добавляется версия файла, на случай если вы внесете какие-либо изменения. Но дело в том, что это замедляет загрузку сайта, ведь каждый раз скрипты и стили загружаются с сервера. Если вы как и я, после завершения разработки сайта вообще не трогаете стили и скрипты, то лучше удалить этот параметр. В этом случае стили и скрипты загрузятся всего один раз на компьютер пользователя и в дальнейшем будут подгружаться из кеша. Поверьте, после этого сайт будет загружаться быстрее. Можете проверить через сервис GTmetrix до и после внесения нижеприведённых изменений.

В случае, если вы используете на сайте шрифты Google, то закомментируйте строку предназначенную для стилей, иначе они не будут работать.

Добавляем в functions.php:

function _remove_script_version( $src ){
	$parts = explode( '?', $src );
	return $parts[0];
}
// Это для скриптов
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
// Это для стилей
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

Убирает версию wordpress

Это просто для вашей безопасности. Добавьте в functions.php:

remove_action('wp_head','wp_generator');
Кстати, если хотите получать информацию о моих новых статьях, то можете подписаться и получать уведомления на емейл об этом.

Шорткод в файле темы

Проблем со вставкой шорткода в текст статьи нет. Вы просто вставляете [short_code] и на этом всё. Однако если вы хотите вставить шорткод в файл темы (например, в заголовок или подвал), то вставлять его нужно вот таким образом:

<?php echo do_shortcode('[short_code]'); ?>

Текущий год

Если у вас всего один сайт, то вас не будет затруднять лезть в код сайта и в его подвале вручную менять текущий год ежегодно. Но если у вас с десяток сайта, то делать это вручную довольно напряжно. Я нашел для себя решение и теперь текущий год отображается автоматически. Вот так выглядит мой footer.php

<span style="color: #800080;">© 2013-</span><!--?php echo date('Y');?--> <span style="color: #800080;"><a href="http://matovsky.com">Roman Matovsky</a></span>

Избавляемся от ошибок в инструментах для вебмастеров

Если у вас в инструментах для вебмастеров Google в разделе «Структурированные данные» есть ошибки: «Отсутствует: author» «Отсутствует: updated» «Отсутствует: entry-title», то нижеприведённый код поможет их исправит. Добавьте его в functions.php. Но учтите, что в некоторых шаблонах hentry может быть классом стиля. А посему, до того как воспользуетесь нижеприведённым кодом, проверьте это. И если hentry действительно используется как класс, то сначала замените его на свой.

function true_remove_hentry( $classes ) {
	$classes = array_diff( $classes, array( 'hentry' ) ); // можно удалить любые классы, указав их в массиве
	return $classes;
}
 
add_filter( 'post_class', 'true_remove_hentry' );

Удаляем Emoji Icons

Далеко не все используют на своём сайте смайлики Emoji. А значит и не нужен ещё один лишний запрос. Удаляется эта строка очень просто, путём добавления в functions.php следующих строк:

remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');

Убираем jquery.js в подвал страницы

Согласно рекомендациям ведущих поисковых систем, для более быстрой загрузки сайтов все скрипты необходимо убирать в подвал страницы. В идеале, конечно, их компилировать в один, да ещё и минифицировать. С этим с лёгкостью справляются плагины. Но бывает так, что некоторые функции сайта не хотят работать так как им полагается, потому, что в скомпилированном файле вместе с другими скриптами jquery.js вызывается или не в тот момент когда он нужен, или же с ошибками. Таким образом, его необходимо добавлять в исключения. Но тогда он будет загружаться в начале страницы, а значит мы возвращаемся к тому с чего начали. Нижеприведённый код помогает решить эту проблему:

function my_init() 
 { 
 if (!is_admin()) 
 { 
 wp_deregister_script('jquery'); 
 wp_register_script('jquery', '/wp-includes/js/jquery/jquery.js', FALSE, '1.11.0', TRUE); 
 wp_enqueue_script('jquery'); 
 } 
 } 
add_action('init', 'my_init');

Удаление devicepx-jetpack.js

Если у вас установлен плагин Jetpack, то с недавнего времени он стал добавлять строчку на свой сервер https://s0.wp.com/wp-content/js/devicepx-jetpack.js. Как признают сами разработчики, вызов данного скрипта не особо и нужен. Однако присутствие в коде страницы данной ссылки означает лишний запрос, да ещё и на сторонний сайт. Удаляется эта строка тоже очень просто, путём добавления в functions.php следующих строк:

function remove_devicepx() {
    wp_dequeue_script( 'devicepx' );
}
add_action( 'wp_enqueue_scripts', 'remove_devicepx' );

Отключаем XML-RPC

А здесь поговорим немного о безопасности. Про XML-RPC и связанных с ним проблемах на WordPress писали много. XML-RPC используется для pingbacks, trackbacks, удаленного доступа с мобильных устройств и для многого другого. Однако его можно использовать не только в благих целях, но даже и в DDOS-атаке на другие сайты. Поэтому решим этом вопрос следующим образом. Для начала добавим в functions.php:

 // Отключаем XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
 // Отключаем X-Pingback to header
add_filter( 'wp_headers', 'disable_x_pingback' );
function disable_x_pingback( $headers ) {
unset( $headers['X-Pingback'] );
return $headers;
}

Теперь добавим в файл .htaccess следующие строки:

<Files xmlrpc.php>
 order allow,deny
 deny from all
</Files>
Рейтинг: 5.0 (7 проголосовавших)
Sending