WordPress Version: 4.6
/**
* Generates Publishing Soon and Recently Published sections.
*
* @since 3.8.0
*
* @param array $args {
* An array of query and display arguments.
*
* @type int $max Number of posts to display.
* @type string $status Post status.
* @type string $order Designates ascending ('ASC') or descending ('DESC') order.
* @type string $title Section title.
* @type string $id The container id.
* }
* @return bool False if no posts were found. True otherwise.
*/
function wp_dashboard_recent_posts($args)
{
$query_args = array('post_type' => 'post', 'post_status' => $args['status'], 'orderby' => 'date', 'order' => $args['order'], 'posts_per_page' => intval($args['max']), 'no_found_rows' => true, 'cache_results' => false, 'perm' => ('future' === $args['status']) ? 'editable' : 'readable');
/**
* Filters the query arguments used for the Recent Posts widget.
*
* @since 4.2.0
*
* @param array $query_args The arguments passed to WP_Query to produce the list of posts.
*/
$query_args = apply_filters('dashboard_recent_posts_query_args', $query_args);
$posts = new WP_Query($query_args);
if ($posts->have_posts()) {
echo '<div id="' . $args['id'] . '" class="activity-block">';
echo '<h3>' . $args['title'] . '</h3>';
echo '<ul>';
$today = date('Y-m-d', current_time('timestamp'));
$tomorrow = date('Y-m-d', strtotime('+1 day', current_time('timestamp')));
while ($posts->have_posts()) {
$posts->the_post();
$time = get_the_time('U');
if (date('Y-m-d', $time) == $today) {
$relative = __('Today');
} elseif (date('Y-m-d', $time) == $tomorrow) {
$relative = __('Tomorrow');
} elseif (date('Y', $time) !== date('Y', current_time('timestamp'))) {
/* translators: date and time format for recent posts on the dashboard, from a different calendar year, see https://secure.php.net/date */
$relative = date_i18n(__('M jS Y'), $time);
} else {
/* translators: date and time format for recent posts on the dashboard, see https://secure.php.net/date */
$relative = date_i18n(__('M jS'), $time);
}
// Use the post edit link for those who can edit, the permalink otherwise.
$recent_post_link = current_user_can('edit_post', get_the_ID()) ? get_edit_post_link() : get_permalink();
$draft_or_post_title = _draft_or_post_title();
printf(
'<li><span>%1$s</span> <a href="%2$s" aria-label="%3$s">%4$s</a></li>',
/* translators: 1: relative date, 2: time */
sprintf(_x('%1$s, %2$s', 'dashboard'), $relative, get_the_time()),
$recent_post_link,
/* translators: %s: post title */
esc_attr(sprintf(__('Edit “%s”'), $draft_or_post_title)),
$draft_or_post_title
);
}
echo '</ul>';
echo '</div>';
} else {
return false;
}
wp_reset_postdata();
return true;
}