Полезные сниппеты, коды и хуки для WordPress.
Статья будет регулярно обновляться и дополняться.
Иногда нас не устраивает базовый функционал WordPress, либо существующих плагинов. В этом случае можно прибегнуть к редактированию системных файлов и любой обладающий минимальным навыками в программировании на php, используя в качестве справочника такой сайт, как наш – может решить практически любую возникающую задачу.
Активируем менеджер ссылок в WordPress 3.5 (и выше)
В версиях WordPress 3.5 (и выше) разработчики лишили нас раздела «Ссылки» в административной панели. Вот сниппет для возврата его на предыдущее место.
Вставляем код в фал functions.php и все готово:
<?php //Активируем встроенный менеджер ссылок в WordPress add_filter( 'pre_option_link_manager_enabled', '__return_true' ); ?>
Подключаем шрифты Typekit напрямую в вашу тему WordPress
Typekit является очень полезным сервисом, который позволяет использовать бесчисленное количество различных шрифтов на вашем сайте/блоге. Они предоставляют плагин для WordPress для простого добавления шрифтов в ВП, однако существует решение, чтобы интегрировать шрифты Typekit напрямую в вашу тему. Вот сниппет для этого.
Отредактируйте код ниже и поправьте путь к файлу .js в строке 2. Затем, просто вставьте его в ваш файл functions.php, сохраните его и все!
function theme_typekit() { wp_enqueue_script( 'theme_typekit', '//use.typekit.net/xxxxxxx.js'); } add_action( 'wp_enqueue_scripts', 'theme_typekit' ); function theme_typekit_inline() { if ( wp_script_is( 'theme_typekit', 'done' ) ) { ?> <script type="text/javascript">try{Typekit.load();}catch(e){}</script> <?php } } add_action( 'wp_head', 'theme_typekit_inline' );
Автоматически обрезаем загруженные изображения вместо их масштабирования
Вы хотели бы обрезать ваши миниатюры вместо их масштабирования? Если так, есть очень удобный сниппет для этого.
Просто добавьте следующий код (куда бы вы думали?:)) — в файл functions.php!
// Стандартный размер миниатюр if(false === get_option("thumbnail_crop")) { add_option("thumbnail_crop", "1"); } else { update_option("thumbnail_crop", "1"); } // Средний размер миниатюр if(false === get_option("medium_crop")) { add_option("medium_crop", "1"); } else { update_option("medium_crop", "1"); } // Большой размер миниатюр if(false === get_option("large_crop")) { add_option("large_crop", "1"); } else { update_option("large_crop", "1"); }
Шорткод для отображения внешних файлов в ваших записях
При наполнении сайта контентом вам может понадобиться включить файл извне, например текст или изображение в вашу собственную запись. Вот очень полезный шорткод для встраивания и отображения любых внешних файлов в ваших записях блога.
Открываем ваш functions.php и вставляем следующую функцию в него:
function show_file_func( $atts ) { extract( shortcode_atts( array( 'file' => '' ), $atts ) ); if ($file!='') return @file_get_contents($file); } add_shortcode( 'show_file', 'show_file_func' );
После окончания действий можно использовать шорткод. Он довольно простой:
[show_file file="http://www.test.com/test.html"]
Автоматически добавляем атрибут nofollow ко всем ссылкам в определенной рубрике
Иногда вам может понадобиться целая рубрика блога, ссылки в которой будут nofollow, к примеру если вы ссылаетесь на множество внешних источников. Вот быстрое решение для этого.
Вставляем следующий код в файл functions.php вашей темы. Не забудьте изменить ID желаемой рубрики в строке 3.
function nofollow_cat_posts($text) { global $post; if( in_category(1) ) { // Здесь задайте ID рубрики $text = stripslashes(wp_rel_nofollow($text)); } return $text; } add_filter('the_content', 'nofollow_cat_posts');
Комбинируем и сжимаем файлы CSS с помощью PHP
В папке с таблицами стилей CSS создаем пустой PHP-файл с именем “css.php” и добавляем в него следующий код:
<?php // сжимаем и склеиваем файлы CSS header('Content-type: text/css'); ob_start("compress"); function compress($buffer) { $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); return $buffer; } include('reset.css'); include('base.css'); include('grid.css'); include('print.css'); ob_end_flush(); ?>
Затем загружаем этот файл на сервер и делаем ссылку на него в секции < head > ваших страниц сайта (или же просто, единожды в файл header.php вашего шаблона WordPress):
<link rel='stylesheet' href='http://example.com/css/css.php' type='text/css' media='all'>
Отключаем сжатие JPEG файлов
Если вы хотите полностью отключить сжатие jpeg-файлов, то вам необходимо указать WordPress, что все эти файлы надо загружать в 100% качестве.
Добавьте следующую строку в файл functions.php вашей темы (либо создайте свой функциональный плагин):
add_filter( 'jpeg_quality', create_function( '', 'return 100;' ) );
Этот код полностью отключит jpeg-сжатие на вашем сайте. Однако если вы желаете не отключать его, а лишь несколько его изменить, то в таком случае продолжайте читать статью.
Уувеличиваем сжатие JPEG файлов
Сжатие ваших изображений сильнее, чем значение по умолчанию, сделает размеры вашего файла еще меньше, что может поднять производительность сайта. Сжатие в 80% и в 85% от оригинала практически не отличаются друг от друга. Важно помнить, что чем меньше процент, тем сильнее будет сжато изображение.
add_filter( 'jpeg_quality', create_function( '', 'return 80;' ) );
Заметьте, что любые изменения, которые вы сделаете, будут применяться только к новым изображениям, загруженным на ваш сайт.
Автоматическое добавление атрибута “nofollow” для внешних ссылок
Значение nofollow запрещает поисковой системе переходить по ссылкам на данной странице или по конкретной ссылке.
По умолчанию WordPress не добавляет автоматически атрибут rel=”nofollow”
к внешним ссылкам в содержании записи. Но такое положение легко исправить.
Скопируйте ниже приведенный код и вставьте его в файл functions.php вашей темы. Как только вы сохраните изменения все внешние ссылки в ваших записях получат атрибут rel=”nofollow”
.
add_filter('the_content', 'auto_nofollow'); function auto_nofollow($content) { //return stripslashes(wp_rel_nofollow($content)); return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content); } function auto_nofollow_callback($matches) { $link = $matches[0]; $site_link = get_bloginfo('url'); if (strpos($link, 'rel') === false) { $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link); } elseif (preg_match("%href=S(?!$site_link)%i", $link)) { $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link); } return $link; }
Запрет обновления Вордпресс:
Потребует внесения изменения в function.php
add_filter('pre_site_transient_update_core',create_function('$a', "return null;")); wp_clear_scheduled_hook('wp_version_check');
Запрет обновления плагинов:
remove_action( 'load-update-core.php', 'wp_update_plugins' ); add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) ); wp_clear_scheduled_hook( 'wp_update_plugins' );
Запрет обновления шаблонов:
remove_action('load-update-core.php','wp_update_themes'); add_filter('pre_site_transient_update_themes',create_function('$a', "return null;")); wp_clear_scheduled_hook('wp_update_themes');
У этого способа есть только один недостаток – при смене шаблона все запреты анулируются. Об этом нужно помнить.
Автоматически добавляем содержимое в конце каждой статьи
Когда вы добавляете одну и туже информацию в конце каждой статьи это становится трудоемким процессом. Чтобы избежать этой рутиной работы воспользуемся хаком для WordPress и добавим следующий код в файл functions.php:
function postFooter($footernote) { if(is_single()) { $footernote .= "<div class='postfot'>"; $footernote .= "<h4>Автор блога: Пупкин Пуп</h4>"; $footernote .= "<p>Следите за моей RSS-лентой: <a href='http://wordsmall.ru/feed/'>Подписывайся!</a>.</p>"; $footernote .= "</div>"; } return $footernote; } add_filter ('the_content', 'postFooter');
CSS
.postfot { background: #fff; padding: 10px; border: 2px solid #bcbcbc; } .postfot h4 { color: #464646; font-family: Arial; font-size: 15px; line-height: 36px; text-transform: uppercase; }