Публикация в группе: Полезное для WordPress

Хотите выводить на своем сайте что то вроде такой статистики?

Статистика по сайту:

Записи рубрики "Форум"..............................................32

Записи рубрики "Новости"..............................................0

Записи рубрики "Обновления"..............................................0

Кроме названия категории, посетитель сайта получает информацию об общем количестве опубликованных записей в этой категории, количество новых записей из общего числа (опубликованных за последние 7 дней) и сразу получает ссылку на страницу архива этой категории.
Достаточно удобно. Подобным образом можно организовать страницу наподобие оглавления в книге. Этот код я писал по заказу, а вы можете взять его уже готовый тут не обращаясь к разработчикам.

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

Приведу полный код шорткода:

function short_lastpost( $atts, $content = null ){

	$content = do_shortcode( shortcode_unautop( $content ) );
	if ( '

' == substr( $content, 0, 4 ) and '

' == substr( $content, strlen( $content ) - 3 ) ) $content = substr( $content, 4, strlen( $content ) - 7 ); extract(shortcode_atts(array( 'cat' => '', //указываем параметры по умолчанию для категории 'tag' => '' //указываем параметры по умолчанию для тегов ), $atts)); if($tag) $tags = explode(',',$tag); //делаем выборку записей по указанным параметрам $args = array( 'numberposts' => -1, 'category' => $cat, 'tag__in' => $tags ); $posts = get_posts($args); $count = count($posts); // считаем количество полученных записей $unix_now_time = strtotime(date("Y-m-d"));//текущее время в unix формате $posts = get_posts($args); $n = 0; foreach($posts as $post){ setup_postdata($post); $unix_public_time = strtotime($post->post_date); //дата публикации $day = ($unix_now_time - $unix_public_time)/86400; //получаем количество дней после публикации записи if($day<7) $n++; } wp_reset_postdata(); if($tags){ $num_tags = count($tags); // считаем количество указанных тегов в фильтре for($a=0;$a<$num_tags;$a++){ $term = get_term( $tags[$a], 'post_tag' ); if($a==0)$tag_slug .= $term->slug; else $tag_slug .= ','.$term->slug; } } if($n!=0) $new_post = ' (+'.$n.')'; //выводим инфу о количестве новых записей (+3) if($tag&&$cat) $tags_archive = ''.$count.$new_post.''; //формируем вид вывода результата else if($cat) $tags_archive = ''.$count.$new_post.''; else if($tag) $tags_archive = ''.$count.$new_post.''; return $tags_archive; } add_shortcode('archive', 'short_lastpost');

Данный код размещаем как обычно в файле functions.php используемого шаблона.

Я постарался все максимально описать в комментариях, но полагаю надо подробнее осветить порядок использования данного шорткода.

Сам шорткод будет выглядеть так [ archive ]
У него есть два атрибута, устанавливая которые мы указываем в какой категории и с какими метками нам надо посчитать записи.

cat - подписчитывает количество записей в указанной категории, необходимо указать идентификатор этой категории
tag - считаем количество записей объеденных указанной тут меткой, необходимо указывать slug нужной метки. Можно указать несколько меток через запятую

В качестве примера могу привести такой вариант шорткода:

[ archive cat="5" tag="slug_metka" ]

что означает, что мы будем подсчитывать записи только из категории ID=5 и только с метками, имеющими ярлык "slug_metka"

40

Автор публикации

не в сети 5 часов

Андрей CS

12K
занят
Комментарии: 2729Публикации: 481Регистрация: 30-11--0001Продаж/Покупок: 0/0