Страница списка авторов: Исключить, исходя из последней даты публикации, не работает правильно

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

Я считаю, что проблема заключается в том, if (6 < (date('n',(time() - strtotime($posts[0]->post_date))))) где n – месяц.

Может ли кто-нибудь помочь исправить поиск, чтобы он показывался только за последние 6 месяцев?

 <?php // Arguments to pass to get_users // ************* $args = array( 'orderby' => 'post_count', 'order' => 'DSC', 'who' => 'authors' ); // Query for the users $authors = get_users('orderby=post_count&order=DSC'); //&role=contributor ?> <?php // Loop through all the users, printing all of their posts as we go foreach ( $authors as $author ) { // Set up a Loop, querying for all of the current user's posts $args = array( 'author' => $author->ID, 'posts_per_page' => 1 ); $posts = query_posts($args); if (6 < (date('n',(time() - strtotime($posts[0]->post_date))))) continue; //skips this autor as long as his last post is older than 6 months, be aware that this check uses date function. ?> <a name="<?php echo $author->user_nicename; ?>"></a> <div class="author-posts-wrapper" id="author-<?php echo $author->ID; ?>-posts-wrapper"> <div class="author-avatar" id="author-<?php echo $author->ID; ?>-avatar"> <?php echo get_avatar( $author->ID, 96 ); ?> </div> <div class="author-posts" id="author-<?php echo $author->ID; ?>-posts"> <h2><a href="<?php echo get_author_posts_url( $author->ID ); ?>"><?php echo $author->display_name; ?></a></h2> <?php if ( have_posts() ) : ?> <div class="author-post-list" id="author-<?php echo $author->ID; ?>-post-list"> <?php while ( have_posts() ) : the_post(); // Print whatever we want for each post - for now the title ?> <div class="author-descrip" style="padding-bottom:2px;"> <?php the_author_meta("description"); ?></div><br /> <p><strong>Most recent article: </strong><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></p> <p> <?php if(get_the_author_meta('user_url')): ?> <?= get_the_author_meta('user_url') ?> <?php endif; ?> </p> <?php endwhile; ?> </div><!-- #author-post-list --> <?php else: ?> <p style="font-style:italic;">This author has not yet published any posts</p> <?php endif; ?> </div><!-- #author-posts --> </div><!-- #author-posts-wrapper --> <?php } // End looping over all users ?> 

Solutions Collecting From Web of "Страница списка авторов: Исключить, исходя из последней даты публикации, не работает правильно"

Вы можете использовать что-то вроде этого:

 if (strtotime('-6 months', time()) >= strtotime($posts[0]->post_date)) continue; 

При использовании strtotime вы действительно можете рассчитать слова (например, +1 month , -3 hours ).

strtotime может выполнять математику по дате.

 echo date('Y m d',strtotime('-6 months',time())); 

Поэтому вы должны быть способны сделать что-то вроде …

 $ptime = strtotime($post->post_date); $min6m = strtotime('-6 months',time()); if ($ptime <= $min6m) { // echo 'yay'; continue; }