Хотите выводить на своем сайте что то вроде такой статистики?
Статистика по сайту:
Записи рубрики "Форум"..............................................35
Записи рубрики "Новости"..............................................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"
Комментариев (0)