У меня на моем сайте о моих путешествиях в отдельных категориях собраны записи одного путешествия. Как правило, первая запись – начало путешествия, дата которого – это дата начала. Последняя запись – конец, дата окончания.
Чтобы автоматически посчитать длительность как отдельного путешествия, как и суммарно всех путешествий, нужно было посчитать количество дней между первой и последней датой по категориям, которые относятся к отдельным путешествия.
Готового решения не нашел, с помощью спецов, составил такой код.
$d[0]=0;
$i=0;
//********** Получаем все подкатегории категории id=165
$args=array(
'orderby' => 'name',
'order' => 'ASC',
'parent' => 165
);
$categories=get_categories($args);
foreach($categories as $category) {
//if ($category->category_parent != 0) {
//********** Для каждой подкатегории определяем дату первого поста
$posts_asc = get_posts( array(
'numberposts' => 1,
'category' => $category->term_id,
'orderby' => 'post_date',
'order' => 'DESC'
) );
$date_end = $posts_asc[0]->post_date;
//********** Для каждой подкатегории определяем дату последнего поста
$posts_desc = get_posts( array(
'numberposts' => 1,
'category' => $category->term_id,
'orderby' => 'post_date',
'order' => 'ASC'
) );
$date_start = $posts_desc[0]->post_date;
//********** Вычисляем длительность каждой категории
$i=$i+1;
$d[$i]=round( ( strtotime( $date_end ) - strtotime( $date_start ) ) / DAY_IN_SECONDS );
$d[0]=$d[0]+$d[$i];
//********** Выводим подкатегории и длительность в днях.
echo 'term_id ) . '" ' . '>' . $category->name.' ';
echo $d[$i], "\n";
}
//}
echo "Общее количество дней ",$d[0];
Конечно же вам потребуется немного модифицировать код под ваши id категорий и вашу конкретику. Если возникнут затруднения – пишите, постараюсь помочь!))
[box type=”note” align=”” class=”” width=””]Это моя статья с моего старого сайта о путешествиях selftrips.ru. Тогда у меня не было другого сайта, и я публиковал там совершенно не тематические статьи.Теперь переношу сюда. Дата оригинальной статьи.[/box]
Дзен версия.