[WordPress] Файл functions.php

Многие темы для WordPress используют различные настройки внешнего вида и функционала, которые записываются в файл functions.php.

Файл доступен в админ-консоле или можно просто отредактировать файл в папке с темой.

2015-07-18

Добавляем рекламный код

Для добавления кода Google AdSense или РСЯ нужно создать новую функцию:

function GA() {
    return '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- GA -->
<ins class="adsbygoogle"
     style="display:inline-block;width:160px;height:600px"
     data-ad-client="ca-pub-99xxxxxxxxxx"
     data-ad-slot="xxxxxxx"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>';
}

add_shortcode('adsense1', 'GA');

В его коде могут быть одинарные кавычки, которые могут вызвать ошибки. Их нужно экранировать с помощью простановки обратного слеша перед каждой из таких кавычек.

В принципе так можно добавить любой рекламный код:

function testovoe_nazvanie() {
    return 'Полученный Вами код AdSense или РСЯ';
}
add_shortcode('adsense1', 'testovoe_nazvanie');

Остается в статье в нужном месте вписать Shortcode:

[adsensе1]

Но вписывать такое постоянно вручную неудобно, поэтому можно сделать автоматическую вставку после заголовков H3. Добавляем новую функцию:

function ads_h3($content) {
$ads='Полученный вами код';
$content=preg_replace('#<h3(.*?)</h3>#','<h3\1</h3><div>'.$ads.'</div>',$content, 3); return $content; } add_filter('the_content','ads_h3');

Цифра 3 ограничивает количество вставок.

Хотите выводить блоки после тега More:

function adsgoolge_ssd($content) {
$google_ads='
здесь ваш рекламный код
';
$content=preg_replace('#<span.*?id="more-(.*?)".*?></span>#','<span id="more-\1"></span></p><center>'.$google_ads.'</center><BR><p style="text-align: justify;">',$content);
return $content;
}
add_filter('the_content', 'adsgoolge_ssd');

Если нужно выводить код спустя некоторое количества символов после начала:

function kama_content_advertise($text){
//спустя сколько символов искать перенос строки и вставлять рекламу?
    $nu = 1500;
//Код рекламы
    $adsense = '<<<HTML Код блока HTML';
    return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adsense\\2", trim($text), 1);
}
add_filter('the_content', 'kama_content_advertise', -10);
?>

Отсчитывается нужное число символов (1500в нашем примере) от начала статьи, и после очередного закрывающего тега абзаца P вставляется РСЯ и Адсенс реклама. При этом можно добавить несколько подобных функций.

Выводим код после некоторых анонсов (например, после каждой третьего анонса):

<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); $loopcounter++; ?><divclass="posts">
 
<?php if ($loopcounter mod 3 == 0) { include (TEMPLATEPATH . '/google_ads.php'); } ?>
<div class="xsnazzy"> <b class="xtop"><b class="xb1"></b><b class="xb2"></b><b class="xb3"></b><b class="xb4"></b></b><div class="xboxcontent"><base target="_blank"><h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2><?php the_content('Читать полностью'); ?>

Код рекламного блока живет в файле google_ads.php из папки с темой оформления. Сравните этот фрагмент index.php со своим и поймете, что на главной посты выводятся в цикле. Вот мы в него и вклиниваемся, отсчитывая с помощью $loopcounter количество анонсов, которые надо пропустить до вставки рекламного блока. mod 3 — это целочисленное деление, а mod 3 == 0 — это каждый третий элемент.

Другие интересные функции

Вместо троеточия в конце используем стандартную ссылку «Читать далее»:

<?php
function new_excerpt_more($more) {
return '<a href="'. get_permalink($post->ID) . '">' . ' Читать далее ..' . '</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

Обрезаем количество слов в тайтле до 7:

В коде шаблона меняем вызов заголовка на:

<?php do_excerpt(get_the_title(), 7); ?>

А в функция добавляем:

function do_excerpt($string, $word_limit) {
 $words = explode(' ', $string, ($word_limit + 1));
 if (count($words) > $word_limit)
 array_pop($words);
 echo implode(' ', $words).' ...';
}

Вывод информации о потреблении памяти движком:

function usage() {
printf(('%d / %s'), get_num_queries(), timer_stop(0, 3));
if ( function_exists('memory_get_usage') ) echo ' / '
 . round(memory_get_usage()/1024/1024, 2) . 'mb ';
}
add_action('admin_footer_text', 'usage');
add_action('wp_footer', 'usage');

Убраем все лишние мета теги из служебной области Html кода страниц:

remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

Чтобы удалить AdminBar (панель сверху):

add_filter( 'show_admin_bar', '__return_false' );

Убираем кликабельные ссылки в комментариях:

remove_filter('comment_text', 'make_clickable', 9);

В комментариях напиши интересные функции, которые используете Вы.

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.