У меня на моем сайте о моих путешествиях в отдельных категориях собраны записи одного путешествия. Как правило, первая запись – начало путешествия, дата которого – это дата начала. Последняя запись – конец, дата окончания.
Чтобы автоматически посчитать длительность как отдельного путешествия, как и суммарно всех путешествий, нужно было посчитать количество дней между первой и последней датой по категориям, которые относятся к отдельным путешествия.
Готового решения не нашел, с помощью спецов, составил такой код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $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 '<a href="' . get_category_link( $category->term_id ) . '" ' . '>' . $category->name.'</a> '; echo $d[$i], "\n"; } //} echo "Общее количество дней ",$d[0]; |
Конечно же вам потребуется немного модифицировать код под ваши id категорий и вашу конкретику. Если возникнут затруднения – пишите, постараюсь помочь!))