Пачка полезных сниппетов для блога. Часть 12

Добавляем произвольные параметры в функцию body_class()

При создании сайта на WordPress может оказаться реально полезной возможность добавить один (или больше) произвольных параметров к функции body_class(). Вот функция, которую мы используем довольно часто при разработке сайтов для клиентов.

Просто скопируйте и вставьте код в файл functions.php вашей темы или в плагин для сайта WordPress:

1function custom_body_class($classes){  
2    if(is_singular()){
3        $myvar = "myparam";
4    } else {
5        $myvar = "anotherparam";
6    }
7 
8    global $post;
9    array_push($classes, $myvar);
10    return $classes;
11}
12 
13add_filter('body_class', 'custom_body_class');

Конечно же, код можно и нужно адаптировать под свои нужды. К примеру, реально универсальное решение для мультиязычных сайтов: произвольный параметр можно использовать для вывода текущего языка в классе body.

Как быстро заменить слова в ваших записях блога

Моделируем ситуацию: ваш блог назывался «мойблог», и вы переименовали его в «мойсуперблог». Не нужно редактировать n-ное количество записей для замены каждого встречаемого там «мойблог»! Вот полезный сниппет, который выполнит всю работу за вас за минуту.

Просто добавьте слова для замены в массив в строке 4. После того, как сделаете, вставьте код в файл function.php вашей темы, сохраните и все готово!

1function replace_text_wps($text){
2    $replace = array(
3        // 'Слово для замены' => 'Новое слово'
4        'wordpress' => '<a href="#">wordpress</a>',
5        'excerpt' => '<a href="#">excerpt</a>',
6        'function' => '<a href="#">function</a>'
7    );
8    $text = str_replace(array_keys($replace), $replace, $text);
9    return $text;
10}
11 
12add_filter('the_content', 'replace_text_wps');
13add_filter('the_excerpt', 'replace_text_wps');

Как заставить RSS Widget обновляться более часто

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

Для применения функции просто вставьте следующий код в ваш файл functions.php или в плагин для сайта WordPress:

1add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 600;') );

Грабим и выводим каналы RSS

Вы наверняка в курсе, что в WordPress есть встроенная RSS читалка. Давайте используем ее для получения данных внешней ленты и вывода их на блоге.

Просто вставляем следующий код в то место, где хотим вывести ленту. Не забываем указать ссылку на фид в строке 4.

1<?php if(function_exists('fetch_feed')) {
2 
3    include_once(ABSPATH.WPINC.'/feed.php');              
4    $feed = fetch_feed('http://feeds.feedburner.com/wpincode');
5 
6    $limit = $feed->get_item_quantity(7); // определяем количество элементов
7    $items = $feed->get_items(0, $limit); // создаем массив элементов
8 
9}
10if ($limit == 0) echo '<div>Лента либо пуста, либо недоступна в данный момент.</div>';
11else foreach ($items as $item) : ?>
12 
13<div>
14    <a href="<?php echo $item->get_permalink(); ?>"
15      title="<?php echo $item->get_date('j F Y @ g:i a'); ?>">
16        <?php echo $item->get_title(); ?>
17    </a>
18</div>
19<div>
20    <?php echo substr($item->get_description(), 0, 200); ?>
21    <span>[...]</span>
22</div>
23 
24<?php endforeach; ?>

Встраиваем страницу в другую страницу

Вы используете различные шаблоны страниц в вашей теме WordPress? Если так, вот интересный хак, который позволит вам встроить одну страницу внутрь другой.

Вставьте следующий код ниже в цикл loop. Убедитесь в том, что вы изменили ID страницы в строке 1!

1<?php $recent = new WP_Query("page_id=**ID**"); while($recent->have_posts()) : $recent->the_post();?>
2       <h3><?php the_title(); ?></h3>
3       <?php the_content(); ?>
4<?php endwhile; ?>
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top