Вывод анонса с заданным количеством слов

Теги: , 3 февраля 2010

Не раз сталкивался с ситуацией, когда необходимо было выводить анонс, ограничив его длину заданным количество слов.

Для этого я использую нижеследующую простенькую функцию.

В файл functions.php WordPress-темы необходимо вставить следующий код:

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

После этого в то место шаблона, где нужно отобразить анонсы постов, вставить вот такой код:

<?php do_excerpt(get_the_excerpt(), 50); ?>

Здесь цифра 50 – это количество слов, которым мы хотим ограничить длину анонса.

Другой вариант

Если вы используете WordPress версии 2.9 или выше, то можно использовать следующую более упрощенную конструкцию:

function new_excerpt_length($length) {
	return 50;
}
add_filter('excerpt_length', 'new_excerpt_length');

Код также необходимо вставить в файл functions.php.

Комментариев: 11
(голосов: 4, средняя оценка: 2.00 из 5)
Loading ... Loading ...

Избегаем дублирования заголовков при постраничной навигации

К сожалению, в WordPress по умолчанию не решен следующий момент – при переходе по ссылкам постраничной навигации вида site.ru/page/2/ заголовок окна браузера (тег <title></title>) остается неизменным, что плохо с точки зрения SEO, т.к. рекомендуется избегать дублирования заголовков на сайте (ситуация, схожая со страницами комментариев).

Чтобы решить этот вопрос, делаем следующее – открываем файл header.php своей темы и перед закрывающимся тегом </title> вставляем вот такой код:

<?php if (get_query_var('paged')) { echo ' - страница '.get_query_var('paged'); } ?>

В результате заголовок страниц (за исключением 1-й) обретет такой вид:

Название сайта - страница 2

Цифра, естественно, будет меняться в зависимости от страницы, на которой мы находимся.

Комментариев: 12
(голосов: 5, средняя оценка: 5.00 из 5)
Loading ... Loading ...

Произвольное поле за пределами цикла

Недавно столкнулся с ситуацией, когда нужно было в сайдбаре получить значение произвольного поля текущего поста. Оказалось, что стандартным способом получить его можно только в пределах цикла поста.

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

Первый вариант

  1. В файле single.php найти код начала цикла:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    

    и сразу после него добавить такой код:

    <?php $GLOBALS['current_id'] = $post->ID; ?>
    

    В результате этого ID (идентификатор) поста станет доступным за пределами цикла (идентификатор нужен нам для считывания произвольного поля).

  2. Теперь, чтобы получить произвольное поле текущего поста за пределами цикла, необходимо использовать следующий код:

    <?php echo get_post_meta($GLOBALS['current_id'], 'customField', true); ?>
    

    Здесь customField – это имя произвольного поля.

Второй вариант

Этот вариант более простой и красивый по сравнению с первым. Достаточно вставить вот такой код в нужное место:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'customField', true);
?>

customField – это имя произвольного поля.

Комментариев: 3
(голосов: 4, средняя оценка: 5.00 из 5)
Loading ... Loading ...