Совет недели: несколько полезных функций

Примечание: Этот текст может содержать некоторые партнерские ссылки, а это значит, что я зарабатываю небольшую комиссию без каких-либо дополнительных затрат с вашей стороны, если вы воспользуетесь этими ссылками. Спасибо за понимание и поддержку.

Наиболее важным для любой темы WordPress является файл дополнительных функций темы — functions.php. Этот файл используется для добавления дополнительных фильтров основного ядра системного кода, или добавления новых функций, которых нет в системном коде.

В этой статье я поделюсь некоторыми полезными кодами, которые вы можете использовать в своей теме, в файле functions.php

Перед внесением изменений в файл fucntions.php сохраните его первоначальную копию. И старайтесь не делать экспериментов с кодом на вашем основном сайте — используйте для этого его локальную копию на компьютере или на поддомене основного сайта.

Как научить ваш сайт распознавать разные браузеры посетителей?

Дело в том, что некоторые элементы дизайна в разных браузерах выглядят по-разному и не всегда красиво. Например, в Сафари шрифты с засечками типа Helvetica. Как научить вашу тему определять тип браузера посетителя и, соответственно, менять для него стилевые классы?

Ниже вы видите код, который надо вставить в файл functions.php вашей активной темы.

if( !function_exists( ‘get_browser_body_class’ )):
////////////////////////////////////////////////////////////////////
// Browser Detect
///////////////////////////////////////////////////////////////////
function get_browser_body_class($classes) {
global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
if($is_lynx) $classes[] = ‘lynx’;
elseif($is_gecko) $classes[] = ‘gecko’;
elseif($is_opera) $classes[] = ‘opera’;
elseif($is_NS4) $classes[] = ‘ns4’;
elseif($is_safari) $classes[] = ‘safari’;
elseif($is_chrome) $classes[] = ‘chrome’;
elseif($is_IE) $classes[] = ‘ie’;
else $classes[] = ‘unknown’;
if($is_iphone) $classes[] = ‘iphone’;
return $classes;
}
add_filter(‘body_class’,’get_browser_body_class’);
endif;

В файле header.php найдите открывающийся тег BODY. Он должен выглядеть так:

<body <?php body_class(); ?>>

Теперь, если ваш посетитель зайдет на ваш сайт с помощью, например, браузера Chrome, этот класс будет у него выглядеть в HTML как

<body class=»chrome»>

Теперь вы можете добавить новые классы стилей отдельно для каждого браузера. Например, если основной шрифт вашей темы — helvetica, в Сафари он некрасивый. Давайте для Сафари его заменим другим — Arial:

/* default — body { font-family: helvetica, arial; } //lets use arial for safari browser */
body.safari { font-family: arial, sans-serif; }

Отключить Adminbar для обычных пользователей

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

// show admin bar only for admins
if (!current_user_can(‘manage_options’)) {
add_filter(‘show_admin_bar’, ‘__return_false’);
}
// show admin bar only for admins and editors
if (!current_user_can(‘edit_posts’)) {
add_filter(‘show_admin_bar’, ‘__return_false’);
}

Изменить стили для записей без миниатюры в анонсе

Так бывает, когда вы ведете сайт, в котором на главной странице выводятся миниатюры анонсов, а вам надо (хочется!), чтобы для некоторых анонсов отсутствовала миниатюра. Но — стиль написан и место под миниатюру остается пустым. Некрасиво. Как удалить? Как сделать так, чтобы анонс выводился красиво, без места под миниатюру?

Советую прочитать еще:  Советы по настройкам Wordpress шаблона: совершенствуем анонс the_excerpt()

Сначала добавьте код в файл functions.php

if( !function_exists( ‘get_has_thumb_class’ )):
////////////////////////////////////////////////////////////////////////////////
// Check if post has thumbnail attached
////////////////////////////////////////////////////////////////////////////////
function get_has_thumb_class($classes) {
global $post;

if( has_post_thumbnail($post->ID) ) {
$classes[] = ‘has_thumb’;
} else {
$classes[] = ‘has_no_thumb’;
}

return $classes;
}
add_filter(‘post_class’, ‘get_has_thumb_class’);
endif;

В цикле вывода записей ленты новостей вам надо добавить такой код:

< ?php post_class(); ? >

Теперь ваша тема сможет обнаружить — добавлена миниатюра в анонсе или нет:

/* if have thumbnail
<article>>*/
<article class=»has_thumb post post-99″>
Важно! Эта запись может содержать ссылки на плагины, которые к моменту вашего чтения и скачивания могут работать не корректно. Будьте внимательны.

Добавить комментарий

Ваш email нигде не будет показан. Обязательные поля помечены *