WordPress Version: 5.8
/**
* Show recent drafts of the user on the dashboard.
*
* @since 2.7.0
*
* @param WP_Post[]|false $drafts Optional. Array of posts to display. Default false.
*/
function wp_dashboard_recent_drafts($drafts = false)
{
if (!$drafts) {
$query_args = array('post_type' => 'post', 'post_status' => 'draft', 'author' => get_current_user_id(), 'posts_per_page' => 4, 'orderby' => 'modified', 'order' => 'DESC');
/**
* Filters the post query arguments for the 'Recent Drafts' dashboard widget.
*
* @since 4.4.0
*
* @param array $query_args The query arguments for the 'Recent Drafts' dashboard widget.
*/
$query_args = apply_filters('dashboard_recent_drafts_query_args', $query_args);
$drafts = get_posts($query_args);
if (!$drafts) {
return;
}
}
echo '<div class="drafts">';
if (count($drafts) > 3) {
printf('<p class="view-all"><a href="%s">%s</a></p>' . "\n", esc_url(admin_url('edit.php?post_status=draft')), __('View all drafts'));
}
echo '<h2 class="hide-if-no-js">' . __('Your Recent Drafts') . "</h2>\n";
echo '<ul>';
/* translators: Maximum number of words used in a preview of a draft on the dashboard. */
$draft_length = (int) _x('10', 'draft_length');
$drafts = array_slice($drafts, 0, 3);
foreach ($drafts as $draft) {
$url = get_edit_post_link($draft->ID);
$title = _draft_or_post_title($draft->ID);
echo "<li>\n";
printf(
'<div class="draft-title"><a href="%s" aria-label="%s">%s</a><time datetime="%s">%s</time></div>',
esc_url($url),
/* translators: %s: Post title. */
esc_attr(sprintf(__('Edit “%s”'), $title)),
esc_html($title),
get_the_time('c', $draft),
get_the_time(__('F j, Y'), $draft)
);
$the_content = wp_trim_words($draft->post_content, $draft_length);
if ($the_content) {
echo '<p>' . $the_content . '</p>';
}
echo "</li>\n";
}
echo "</ul>\n";
echo '</div>';
}