Ещё несколько фот участников прогулки на яхте и побережья Эйлата. Не доплыв метров 500 до водной ...
На хабре давно появилась традиция “Хабрафуршетов”, на которых все желающие могли помочь “советом” ...
После прогулки на Яхте мы вернулись в лагерь отдохнули, потом отправились в дайв клуб «Snuba DC ...
Не так давно поменял шаблон на блоге, это происходит редко, поэтому я стараюсь максимально его задействовать, не применяя плагинов. Хотя я не сторонник позиции "без плагинов", есть функции, которые встроить в шаблон - хорошая идея. Сегодня я хочу выложить свои
функции Wordpress, которые я использовал при разработке шаблона.
Когда-то давно я писал подобную статью, но с позиции нынешнего опыта - она кажется мммм... Не такой как нужно и направлена она скорее на визуальные функции. Сегодня речь пойдет о "технической" стороне вопроса. А ту я когда нибудь переделаю ;)
Функции в этом списке - не новы, используются во многих премиум-шаблонах, появляются в других подобных подборках. Я преследовал одну цель - собрать в кучу то, что я использую у себя или на клиентских проектах, чтобы не искать по всей Сети в нужный момент.
[divider style="dashed"]
Перенаправление на результат поиска
Часто бывает так, что стандартный поиск WP выдает в результатах всего одну запись. У меня это случается при поиске по имени шаблона, к примеру. Логично будет перенаправить посетителя сразу же к этой записи, не выводя список результатов поиска.
[php]
add_action('template_redirect', 'redirect_search');
function redirect_search() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
}
}
}
[/php]
Удаляем стандартные размеры загружаемых изображений
Я не использую размеры, которые WP мне предлагает по умолчанию. Можно смело их удалить...
[php]
function remove_default_image_size( $size) {
unset( $size['thumbnail']);
unset( $size['medium']);
unset( $size['large']);
return $size;
}
add_filter('intermediate_image_sizes_advanced','remove_default_image_size');
[/php]
Этот код оставляет только полный размер изображений, то есть тот, который вы загружаете. Однако, не всегда один размер - это хорошо.
Добавляем свои размеры изображений
В целом, этот код нужен для добавления
дополнительных размеров, если стандартных не хватает. Обычно достаточно установить нужный размер в настройках медиафайлов
[php]
if ( function_exists( 'add_image_size' ) ) {
add_image_size('имя1', 200, 9999 ); //200 - ширина, высота не ограничена
add_image_size('имя2', 220, 180, true ); //(обрезка под размер, true)
}
[/php]
Такую функцию я использую для добавления картинок, использующихся в виджете лучших записей, изменение размера "на лету" - плохая идея для быстродействия блога.
Использовать добавленный размер можно примерно так:
[php]
if ( has_post_thumbnail() ){
the_post_thumbnail( 'имя1' );
}
[/php]
Изменяем текст "Введите заголовок"
Как вы знаете, Wordpress поддерживает пользовательские типы записей, это могут быть отзывы клиентов, продукты и многое другое. Можно поменять стандартный заголовок при вводе новой записи, адаптировать его под тип записи.
[php]
function default_product_title( $title ){
$screen = get_current_screen();
if ( $screen->post_type == 'product' ) {
return 'Введите название продукта';
}
}
add_filter( 'enter_title_here', 'default_product_title' );
[/php]
Этот код меняет заголовок для гипотетического типа записи "Продукты". Для замены этого текста в стандартных записях нам понадобится вот такая функция:
[php]
function title_custom( $title ){
return $title = 'Что-то интересное';
}
add_filter( 'enter_title_here', 'title_custom');
[/php]
Изменяем стандартный Email отправки
Wordpress иногда присылает мне письма с разными оповещениями, при этом в качестве отправителя там указан я сам. Это не совсем "красиво" и вызывает сложности(несущественные, но все же) при автоматической сортировке почты. Эту ситуацию легко исправить:
[php]
add_filter('wp_mail_from', 'new_mail_from');
add_filter('wp_mail_from_name', 'new_mail_from_name');
function new_mail_from($old) {
return 'vasya@site.ru';//указываем нужный адрес
}
function new_mail_from_name($old) {
return 'Vasya blog'; //указываем нужное имя
}
[/php]
Меняем текст в футере админ-панели
Вы наверняка видели надпись "Спасибо вам за творчество с Wordpress" в футере админ-панели. Мне она порядком надоела, хоть и не бросается в глаза. Менять ее или нет - дело ваше, я сменил вот так:
[php]
function remove_footer_admin () {
echo "GB:Make web better";//ваш текст
}
add_filter('admin_footer_text', 'remove_footer_admin');
[/php]
Стандартное cжатие JPEG
Я готовлю изображения для каждой записи блога самостоятельно, мне не нужна помощь движка в этом. Однако, Wordpress пытается мне помочь и дополнительно сжимает картинки, аналогично он поступает при генерации миниатюр(смотрим чуть выше, про создание и удаление размеров изображений). Можно попросить его не делать этого, используя такой код:
[php]
add_filter('jpeg_quality',function($arg){return 100;});
[/php]
Вместо цифры - подставляйте необходимое вам значение, я оставил 100.
Добавляем поля для дополнительных контактов
Эту функцию я не использовал на этом блоге, однако она успешно работает на одном из клиентских проектов. По умолчанию, Wordpress предлагает небогатый выбор контактных данных:
Тем более, в нашей стране они не совсем актуальны. Я добавил два дополнительных поля, для Вконтакте и Твиттера:
[php]
function my_user($user_contactmethods){
$user_contactmethods['Twitter'] = 'Twitter URL';
$user_contactmethods['VK'] = 'Вконтакте URL';
return $user_contactmethods;
}
add_filter('user_contactmethods', 'my_user');
[/php]
Аналогично можно добавить необходимые вам поля. Но как же быть со старыми, ненужными полями? Очень просто, смотрим усовершенствованный код:
[php]
function my_user($user_contactmethods){
/*удаляем ненужное*/
unset($user_contactmethods['aim']);
unset($user_contactmethods['yim']);
unset($user_contactmethods['jabber']);
/*добавляем нужное*/
$user_contactmethods['twitter'] = 'Twitter URL';
$user_contactmethods['VK'] = 'Вконтакте URL';
return $user_contactmethods;
}
add_filter('user_contactmethods', 'my_user');
[/php]
Теперь у нас примерно такая картина:
Вывести эту информацию в коде можно таким образом:
[php]
echo get_user_meta(1, 'VK', true);
[/php]
Эту
функцию Wordpress можно использовать не только для контактов, я вывожу подобным кодом направления работы архитекторов, к примеру. Включаем фантазию и создаем волшебные вещи ;)
Отдаем миниатюру в RSS
Это вообще "бородатая" функция, однако в самописном шаблоне обязательна, поэтому я добавил ее в этот список. Думаю, не нужно объяснять, зачем она нужна?
[php]
function rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '<p>' . get_the_post_thumbnail($post->ID) .
'</p>' . get_the_content();
}
return $content;
}
add_filter('the_excerpt_rss', 'rss_post_thumbnail');
add_filter('the_content_feed', 'rss_post_thumbnail');
[/php]
Даем блогу больше воздуха
Эта функция Wordpress не совсем функция, точнее, совсем даже не функция. Однако, она может быть полезна при некоторых обстоятельствах. Мне вот недавно на VPS увеличили размер оперативной памяти, а почему бы не побаловать блог, ведь памяти лишней не бывает. Тем более, Wordpress достаточно требователен к оперативке. Отлично, добавим вот такой код в файлик
wp-config, который лежит в корне сайта:
[php]
define('WP_MEMORY_LIMIT', '128M');
[/php]
По умолчанию, WP использует 32М оперативной памяти, но если есть еще - почему бы не дать ему вздохнуть свободнее? Однако учитывайте еще такой факт - это значение
не будет работать, если в php.ini(настройки PHP у хостера) стоит значение меньше, чем вы указали. Будет использовано именно оно. Так что код актуален больше для хостингов уровня VPS и выше.
Вот и все на сегодня. Надеюсь, было познавательно...
Удачного дня ;)
Кремниевые ножи и топоры, наконечники для стрел и копий, скребки и прочие орудия труда, принадлежавшие первобытным людям, обрели современный стиль и некоторое переосмысление. Дизайн-группа
Ami Drach & Dov Ganchrow из Тель-Авива разработала интересный арт-проект
Modern Stone – Flint tools, в котором
сделала попытку совместить древнейшее стремление человека облегчить себе труд и оптимизировать производство, с современными технологиями.
Подробнее..
URL записи