Окна дышат испариной,
Скупо светят во тьму.
На завалинке старенькой
Хорошо одному.
Слушать трели подзвёздные
Перелётных певцов,
Да в мобильнике позднее
Ковырять письмецо.
Логом ветер хоронится
В непроглядной тиши,
Веткой долу поклонится
Волоса заершит.
А моя-то без хворости
Набекрень голова:
Без зазору, без корысти
Доверяюсь словам.
Читать дальше…
Поговорим о файле functions.php.
Казалось бы, функции вынесенные во внешний файл, что тут необычного?
Прежде всего – эти функции имеют максимальный приоритет, то есть обрабатываются в самом начале загрузки страницы.
Это значит, что собрав в functions.php все мелкие функции из часто используемых плагинов мы можем слегка разгрузить сервер и уменьшить время загрузки страницы.
Например, плагин maxsite-memory-usage.php от Макса определяет объём использованной памяти и количество запросов, а состоит всего из четырёх строк:
add_action(‘wp_footer’, ‘maxsite_memory_usage’);
function maxsite_memory_usage() {
if ( function_exists(‘memory_get_usage’) ) echo ‘ Потребление памяти: ‘ . round(memory_get_usage()/1024/1024, 2) . ‘MB’;
} |
При вызове функции в виде плагина происходит обращение к базе данных; та же функция, записанная в functions.php позволяет сократить количество запросов к базе данных и выполнить тот же код. И редактировать самые используемые функции из одного файла проще, чем рыться в папке /plugins/
Мелочь? Да, если эта функция одна. А если их десяток – это уже, как минимум сокращение на десять запросов к базе данных.
Что сюда можно добавить? Любой код, как из плагинов, так и собственный:
Начнём с кода файла index.php, выдернутого наугад из первой попавшейся темы:
Окончания слова “комментарий” – то есть, “2 комментария”, “5 комментариев” и так далее.
function russ_comments_number($zero = false, $one = false, $more = false, $deprecated = ”) {
global $id;
$number = get_comments_number($id);
if ($number == 0) {$output = ‘Прокомментируете?’;}
elseif ($number == 1) {$output = ‘1 комментарий’;}
elseif (($number > 20) && (($number % 10) == 1)) {$output = str_replace(‘%’, $number, ‘% комментарий’);}
elseif ((($number >= 2) && ($number <= 4)) || ((($number % 10) >= 2) && (($number % 10) <= 4)) && ($number > 20))
{$output = str_replace(‘%’, $number, ‘% комментария’);}
else {$output = str_replace(‘%’, $number, ‘% комментариев’);}
echo apply_filters(‘russify_comments_number’, $output, $number);
}
add_filter(‘comments_number’, ‘russ_comments_number’); |
Блокировка своего собственного пинга
function no_self_ping(&$links) {
$home = get_option( ‘home’ ); foreach ( $links as $l => $link ) if ( 0 === strpos( $link, $home ) ) unset($links[$l]);}
add_action( ‘pre_ping’, ‘no_self_ping’ ); |
Удаление дубликатов содержимого из обхода поисковых роботов
$index_category_pages = true;
function seofriend_wp_head() {
global $index_category_pages;
if($index_category_pages){
if( ( (is_single() || is_page() || is_home()) && (!is_paged()) ) || is_category())
{echo “<meta name=”robots” content=”index,follow” />n”;}
else{echo “<meta name=”robots” content=”noindex,follow” />n”;}
}else{
if((is_single() || is_page() || is_home()) && (!is_paged()))
{echo “<meta name=”robots” content=”index,follow” />n”;}
else{echo “<meta name=”robots” content=”noindex,follow” />n”;}
}
}
add_action(‘wp_head’, ’seofriend_wp_head’); |
Добавление социальных закладок в записи. В нужном месте вставить <?php social(); ?>
function social() {
$u = urlencode(get_permalink());
$t = get_the_title();
$social=<<<EOF
function so(u,t) {
for (i=0; i<s.length; i=i+2) document.write(‘<a title=”Добавить закладку на эту статью Levati’s blog-а в ‘+s[i]+’” href=”http://’+s[i]+’/’+s[i+1].replace(‘{u}’,u).replace(‘{t}’,t)+’” target=”_blank”>’+
‘<img src=”путь_к_папке_с_иконками’+s[i]+’.ico” border=”0″ alt=”Добавить в ‘+s[i]+’” width=”16″ height=”16″ /></a>’
);
}
var s=new Array(“del.icio.us”,”post?url={u}&title={t}”, “news2.ru”,”add_story.php?url={u}”, “google.com”,”bookmarks/mark?op=edit&bkmk={u}&title={t}”, “bobrdobr.ru”,”add.html?url={u}&title={t}”, “memori.ru”,”link/?sm=1&u_data[url]={u}&u_data[name]={t}”, “moemesto.ru”,”post.php?url={u}&title={t}”, “mister-wong.ru”,”add_url/?bm_url={u}&bm_description={t}”, “rumarkz.ru”,”bookmarks/?action=add&popup=1&address={u}&title={t}&description={t}”, “rucity.com”,”bookmarks.php?action=add&address={u}&title={t}&description=”, “linkstore.ru”,”servlet/LinkStore?a=add&url={u}&title={t}”, “myscoop.ru”,”add/?title={t}&URL={u}”, “vaau.ru”,”submit/?action=step2&url={u}”, “newsland.ru”,”News/Add/type/news/”);
EOF;
echo <<<EOF
<p class=”social”><script type=’text/javascript’>$social so (‘$u’, encodeURIComponent(‘$t’));</script></p>
EOF;
} |
Напоминание об RSS-подписке
function subscribe_remind($content) {
if ( !is_feed() && !is_page() && !is_home() && !is_search() && !is_archive() && !is_author() && !is_category() && !is_paged())
$content .= ‘<div id=”remind”>Будьте в курсе новостей сайта, <a href=”url_Вашей_RSS_ленты”>Подпишитесь на RSS ленту</a>!</div>’;
return $content;
}
add_filter(‘the_content’, ’subscribe_remind’, 999); |
|
|
Второе применение functions.php – виджеты. Собственно, добавляется еще одна функция, которая определяет блоки в теме оформления сайта, настраиваемые из админпанели. Весь её код:
if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘before_widget’ => ‘<div”>’, //тег перед виджетом
‘after_widget’ => ‘</div>’, //тег после виджета
‘before_title’ => ‘<h2>’, //тег перед заголовком виджета
‘after_title’ => ‘</h2>’, //тег после заголовка виджета
)); |
Виджеты – это находка для любящих поэкспериментировать: лучше, если справа вывести рубрики и ссылки, а слева архив и поиск, или если наоборот поменять? А может… вот именно виджетизированный скин и подойдёт для определения “может” и “не может”.
Если же Вы точно знаете, чего хотите – пропишите это в теме статически и сэкономьте еще немного памяти.
PS: За давностью коллекции некоторые авторы утеряны, но примазываться к чужой славе не по-взрослому, потому, если в перечне кто-то узнает свои функции – в комментарии укажите ссылку на оригинал, в записи я поставлю его напрямую.
Утро, вагон, хамоватый попутчик,
Солнце в глаза, за окошком – весна.
Еду в деревню. Что может быть лучше:
Три выходных и другая страна!
Что там? Такое же ясное небо,
Так же чудачит в лесу соловей.
Краше места, где я до сих пор не был,
Видимо, есть, только нету родней.
Соль на спине да земля на лопате,
Мысли о малом: попить и присесть…
Хватит границ, и политики хватит!
Не россиянин – но вырос я здесь.
Читать дальше…