Как вывести цитаты из предыдущего и следующего постов

Как вывести цитаты из предыдущего и следующего постов | n-wp.ru
Способ вывода цитат из предыдущего и следующего постов. Его можно настроить, добавив категории-исключения, сделать вывод только из постов той же категории.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Многие блоггеры используют в конце постов ссылки на предыдущий и следующий посты. Эти ссылки можно вывести с помощью функций next_post_link и previous_post_link. Эти функции позволяют вывести ссылки на предыдущий пост и следующий пост, а так же ссылки на предыдущий пост из этой же категории и следующий пост из этой же категории. Но иногда такие ссылки не всегда информативны – по названию не все всегда можно понять, о чем идет речь в постах, и неплохо бы их для пущей ясности дополнить кратким описанием (цитатой). Прямых функций, выводящих цитаты предыдущих и следующих постов я не нашел, зато обнаружил способ вывода цитаты из предыдущего/следующего постов с помощью специальных функций с параметрами.

Как вывести цитаты предыдущего и следующего постов

Откройте файл functions.php и добавьте в него следующий код:

function tl_excerpt($text, $excerpt_length = 32) {
	$text = str_replace(']]>', ']]>', $text);
	$text = strip_tags($text);
	$words = explode(' ', $text, $excerpt_length + 1);
	if (count($words) > $excerpt_length) {
		array_pop($words);
		array_push($words, '[...]');
		$text = implode(' ', $words);
	}

	return apply_filters('the_excerpt', $text);
}

function tl_post_excerpt($post) {
	$excerpt = ($post->post_excerpt == '') ? (tl_excerpt($post->post_content))
			: (apply_filters('the_excerpt', $post->post_excerpt));
	return $excerpt;
}

function previous_post_excerpt($in_same_cat = false, $excluded_categories = '') {
	if ( is_attachment() )
		$post = &get_post($GLOBALS['post']->post_parent);
	else
		$post = get_previous_post($in_same_cat, $excluded_categories);

	if ( !$post )
		return;
	$post = &get_post($post->ID);
	echo tl_post_excerpt($post);
}

function next_post_excerpt($in_same_cat = false, $excluded_categories = '') {
	$post = get_next_post($in_same_cat, $excluded_categories);

	if ( !$post )
		return;
	$post = &get_post($post->ID);
	echo tl_post_excerpt($post);
}

Для того, чтобы вывести цитату из следующего поста, вставьте в шаблон:

</pre>
<p>Для того, чтобы вывести цитату из предыдущего поста, вставьте в шаблон:</p>
<pre>

За количество слов, выводимых в цитате, отвечает $excerpt_length = 32, все остальное обрезается символами […] – вы можете изменить эти значения. В приведенном примере не учитывается, из каких постов каких категорий выводятся цитаты. Если вам нужно выводить цитаты из постов этой же категории, то поменяйте в приведенном коде $in_same_cat с false на true. Если вам нужно исключить некоторые из категорий, то можете перечислить их ID в $excluded_categories = ” (пример: $excluded_categories = ‘1,2,6,99’).

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. Nurlan

    Не знаю почему, но

    ($text, $excerpt_length = 32)

    не работает. Сокращал до цифры 12 и ничего не меняется. Длина у меня получается произвольная. Где-то длиннее, где-то короче. http://maks-1.com

    Ответить