Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-includes
/
wp-admin
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php function wp_dashboard_setup() { global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks; $wp_dashboard_control_callbacks = array(); $screen = get_current_screen(); $response = wp_check_browser_version(); if ($response && $response['upgrade']) { add_filter('postbox_classes_dashboard_dashboard_browser_nag', 'dashboard_browser_nag_class'); if ($response['insecure']) { wp_add_dashboard_widget('dashboard_browser_nag', __('You are using an insecure browser!'), 'wp_dashboard_browser_nag'); } else { wp_add_dashboard_widget('dashboard_browser_nag', __('Your browser is out of date!'), 'wp_dashboard_browser_nag'); } } $response = wp_check_php_version(); if ($response && isset($response['is_acceptable']) && !$response['is_acceptable'] && current_user_can('update_php')) { add_filter('postbox_classes_dashboard_dashboard_php_nag', 'dashboard_php_nag_class'); wp_add_dashboard_widget('dashboard_php_nag', __('PHP Update Recommended'), 'wp_dashboard_php_nag'); } if (current_user_can('view_site_health_checks') && !is_network_admin()) { if (!class_exists('WP_Site_Health')) { require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php'; } WP_Site_Health::get_instance(); wp_enqueue_style('site-health'); wp_enqueue_script('site-health'); wp_add_dashboard_widget('dashboard_site_health', __('Site Health Status'), 'wp_dashboard_site_health'); } if (is_blog_admin() && current_user_can('edit_posts')) { wp_add_dashboard_widget('dashboard_right_now', __('At a Glance'), 'wp_dashboard_right_now'); } if (is_network_admin()) { wp_add_dashboard_widget('network_dashboard_right_now', __('Right Now'), 'wp_network_dashboard_right_now'); } if (is_blog_admin()) { wp_add_dashboard_widget('dashboard_activity', __('Activity'), 'wp_dashboard_site_activity'); } if (is_blog_admin() && current_user_can(get_post_type_object('post')->cap->create_posts)) { $quick_draft_title = sprintf('<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __('Quick Draft'), __('Your Recent Drafts')); wp_add_dashboard_widget('dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press'); } wp_add_dashboard_widget('dashboard_primary', __('WordPress Events and News'), 'wp_dashboard_events_news'); if (is_network_admin()) { do_action('wp_network_dashboard_setup'); $dashboard_widgets = apply_filters('wp_network_dashboard_widgets', array()); } elseif (is_user_admin()) { do_action('wp_user_dashboard_setup'); $dashboard_widgets = apply_filters('wp_user_dashboard_widgets', array()); } else { do_action('wp_dashboard_setup'); $dashboard_widgets = apply_filters('wp_dashboard_widgets', array()); } foreach ($dashboard_widgets as $widget_id) { $name = empty($wp_registered_widgets[$widget_id]['all_link']) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " <a href='{$wp_registered_widgets[$widget_id]['all_link']}' class='edit-box open-box'>" . __('View all') . '</a>'; wp_add_dashboard_widget($widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback']); } if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) { check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce'); ob_start(); wp_dashboard_trigger_widget_control($_POST['widget_id']); ob_end_clean(); wp_redirect(remove_query_arg('edit')); exit; } do_action('do_meta_boxes', $screen->id, 'normal', ''); do_action('do_meta_boxes', $screen->id, 'side', ''); } function wp_add_dashboard_widget($widget_id, $widget_name, $callback, $control_callback = null, $callback_args = null, $context = 'normal', $priority = 'core') { $screen = get_current_screen(); global $wp_dashboard_control_callbacks; $private_callback_args = array('__widget_basename' => $widget_name); if (is_null($callback_args)) { $callback_args = $private_callback_args; } elseif (is_array($callback_args)) { $callback_args = array_merge($callback_args, $private_callback_args); } if ($control_callback && current_user_can('edit_dashboard') && is_callable($control_callback)) { $wp_dashboard_control_callbacks[$widget_id] = $control_callback; if (isset($_GET['edit']) && $widget_id == $_GET['edit']) { list($url) = explode('#', add_query_arg('edit', false), 2); $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url($url) . '">' . __('Cancel') . '</a></span>'; $callback = '_wp_dashboard_control_callback'; } else { list($url) = explode('#', add_query_arg('edit', $widget_id), 2); $widget_name .= ' <span class="postbox-title-action"><a href="' . esc_url("{$url}#{$widget_id}") . '" class="edit-box open-box">' . __('Configure') . '</a></span>'; } } $side_widgets = array('dashboard_quick_press', 'dashboard_primary'); if (in_array($widget_id, $side_widgets, true)) { $context = 'side'; } $high_priority_widgets = array('dashboard_browser_nag', 'dashboard_php_nag'); if (in_array($widget_id, $high_priority_widgets, true)) { $priority = 'high'; } if (empty($context)) { $context = 'normal'; } if (empty($priority)) { $priority = 'core'; } add_meta_box($widget_id, $widget_name, $callback, $screen, $context, $priority, $callback_args); } function _wp_dashboard_control_callback($dashboard, $meta_box) { echo '<form method="post" class="dashboard-widget-control-form wp-clearfix">'; wp_dashboard_trigger_widget_control($meta_box['id']); wp_nonce_field('edit-dashboard-widget_' . $meta_box['id'], 'dashboard-widget-nonce'); echo '<input type="hidden" name="widget_id" value="' . esc_attr($meta_box['id']) . '" />'; submit_button(__('Submit')); echo '</form>'; } function wp_dashboard() { $screen = get_current_screen(); $columns = absint($screen->get_columns()); $columns_css = ''; if ($columns) { $columns_css = " columns-{$columns}"; } ?> <div id="dashboard-widgets" class="metabox-holder<?php echo $columns_css; ?>"> <div id="postbox-container-1" class="postbox-container"> <?php do_meta_boxes($screen->id, 'normal', ''); ?> </div> <div id="postbox-container-2" class="postbox-container"> <?php do_meta_boxes($screen->id, 'side', ''); ?> </div> <div id="postbox-container-3" class="postbox-container"> <?php do_meta_boxes($screen->id, 'column3', ''); ?> </div> <div id="postbox-container-4" class="postbox-container"> <?php do_meta_boxes($screen->id, 'column4', ''); ?> </div> </div> <?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); } function wp_dashboard_right_now() { ?> <div class="main"> <ul> <?php foreach (array('post', 'page') as $post_type) { $num_posts = wp_count_posts($post_type); if ($num_posts && $num_posts->publish) { if ('post' === $post_type) { $text = _n('%s Post', '%s Posts', $num_posts->publish); } else { $text = _n('%s Page', '%s Pages', $num_posts->publish); } $text = sprintf($text, number_format_i18n($num_posts->publish)); $post_type_object = get_post_type_object($post_type); if ($post_type_object && current_user_can($post_type_object->cap->edit_posts)) { printf('<li class="%1$s-count"><a href="edit.php?post_type=%1$s">%2$s</a></li>', $post_type, $text); } else { printf('<li class="%1$s-count"><span>%2$s</span></li>', $post_type, $text); } } } $num_comm = wp_count_comments(); if ($num_comm && ($num_comm->approved || $num_comm->moderated)) { $text = sprintf(_n('%s Comment', '%s Comments', $num_comm->approved), number_format_i18n($num_comm->approved)); ?> <li class="comment-count"><a href="edit-comments.php"><?php echo $text; ?></a></li> <?php $moderated_comments_count_i18n = number_format_i18n($num_comm->moderated); $text = sprintf(_n('%s Comment in moderation', '%s Comments in moderation', $num_comm->moderated), $moderated_comments_count_i18n); ?> <li class="comment-mod-count <?php if (!$num_comm->moderated) { echo ' hidden'; } ?> "><a href="edit-comments.php?comment_status=moderated" class="comments-in-moderation-text"><?php echo $text; ?></a></li> <?php } $elements = apply_filters('dashboard_glance_items', array()); if ($elements) { echo '<li>' . implode("</li>\n<li>", $elements) . "</li>\n"; } ?> </ul> <?php update_right_now_message(); if (!is_network_admin() && !is_user_admin() && current_user_can('manage_options') && '0' == get_option('blog_public')) { $title = apply_filters('privacy_on_link_title', ''); $content = apply_filters('privacy_on_link_text', __('Search engines discouraged')); $title_attr = '' === $title ? '' : " title='{$title}'"; echo "<p class='search-engines-info'><a href='options-reading.php'{$title_attr}>{$content}</a></p>"; } ?> </div> <?php ob_start(); do_action('rightnow_end'); do_action('activity_box_end'); $actions = ob_get_clean(); if (!empty($actions)) { ?> <div class="sub"> <?php echo $actions; ?> </div> <?php } } function wp_network_dashboard_right_now() { $actions = array(); if (current_user_can('create_sites')) { $actions['create-site'] = '<a href="' . network_admin_url('site-new.php') . '">' . __('Create a New Site') . '</a>'; } if (current_user_can('create_users')) { $actions['create-user'] = '<a href="' . network_admin_url('user-new.php') . '">' . __('Create a New User') . '</a>'; } $c_users = get_user_count(); $c_blogs = get_blog_count(); $user_text = sprintf(_n('%s user', '%s users', $c_users), number_format_i18n($c_users)); $blog_text = sprintf(_n('%s site', '%s sites', $c_blogs), number_format_i18n($c_blogs)); $sentence = sprintf(__('You have %1$s and %2$s.'), $blog_text, $user_text); if ($actions) { echo '<ul class="subsubsub">'; foreach ($actions as $class => $action) { $actions[$class] = "\t<li class='{$class}'>{$action}"; } echo implode(" |</li>\n", $actions) . "</li>\n"; echo '</ul>'; } ?> <br class="clear" /> <p class="youhave"><?php echo $sentence; ?></p> <?php do_action('wpmuadminresult'); ?> <form action="<?php echo network_admin_url('users.php'); ?>" method="get"> <p> <label class="screen-reader-text" for="search-users"><?php _e('Search Users'); ?></label> <input type="search" name="s" value="" size="30" autocomplete="off" id="search-users"/> <?php submit_button(__('Search Users'), '', false, false, array('id' => 'submit_users')); ?> </p> </form> <form action="<?php echo network_admin_url('sites.php'); ?>" method="get"> <p> <label class="screen-reader-text" for="search-sites"><?php _e('Search Sites'); ?></label> <input type="search" name="s" value="" size="30" autocomplete="off" id="search-sites"/> <?php submit_button(__('Search Sites'), '', false, false, array('id' => 'submit_sites')); ?> </p> </form> <?php do_action('mu_rightnow_end'); do_action('mu_activity_box_end'); } function wp_dashboard_quick_press($error_msg = false) { global $post_ID; if (!current_user_can('edit_posts')) { return; } $last_post_id = (int) get_user_option('dashboard_quick_press_last_post_id'); if ($last_post_id) { $post = get_post($last_post_id); if (empty($post) || 'auto-draft' !== $post->post_status) { $post = get_default_post_to_edit('post', true); update_user_option(get_current_user_id(), 'dashboard_quick_press_last_post_id', (int) $post->ID); } else { $post->post_title = ''; } } else { $post = get_default_post_to_edit('post', true); $user_id = get_current_user_id(); if (in_array(get_current_blog_id(), array_keys(get_blogs_of_user($user_id)), true)) { update_user_option($user_id, 'dashboard_quick_press_last_post_id', (int) $post->ID); } } $post_ID = (int) $post->ID; ?> <form name="post" action="<?php echo esc_url(admin_url('post.php')); ?>" method="post" id="quick-press" class="initial-form hide-if-no-js"> <?php if ($error_msg) { ?> <div class="error"><?php echo $error_msg; ?></div> <?php } ?> <div class="input-text-wrap" id="title-wrap"> <label for="title"> <?php echo apply_filters('enter_title_here', __('Title'), $post); ?> </label> <input type="text" name="post_title" id="title" autocomplete="off" /> </div> <div class="textarea-wrap" id="description-wrap"> <label for="content"><?php _e('Content'); ?></label> <textarea name="content" id="content" placeholder="<?php esc_attr_e('What’s on your mind?'); ?>" class="mceEditor" rows="3" cols="15" autocomplete="off"></textarea> </div> <p class="submit"> <input type="hidden" name="action" id="quickpost-action" value="post-quickdraft-save" /> <input type="hidden" name="post_ID" value="<?php echo $post_ID; ?>" /> <input type="hidden" name="post_type" value="post" /> <?php wp_nonce_field('add-post'); ?> <?php submit_button(__('Save Draft'), 'primary', 'save', false, array('id' => 'save-post')); ?> <br class="clear" /> </p> </form> <?php wp_dashboard_recent_drafts(); } 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'); $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<ul>"; $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), 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</div>"; } function _wp_dashboard_recent_comments_row(&$comment, $show_date = true) { $GLOBALS['comment'] = clone $comment; if ($comment->comment_post_ID > 0) { $comment_post_title = _draft_or_post_title($comment->comment_post_ID); $comment_post_url = get_the_permalink($comment->comment_post_ID); $comment_post_link = "<a href='{$comment_post_url}'>{$comment_post_title}</a>"; } else { $comment_post_link = ''; } $actions_string = ''; if (current_user_can('edit_comment', $comment->comment_ID)) { $actions = array('approve' => '', 'unapprove' => '', 'reply' => '', 'edit' => '', 'spam' => '', 'trash' => '', 'delete' => '', 'view' => ''); $del_nonce = esc_html('_wpnonce=' . wp_create_nonce("delete-comment_{$comment->comment_ID}")); $approve_nonce = esc_html('_wpnonce=' . wp_create_nonce("approve-comment_{$comment->comment_ID}")); $approve_url = esc_url("comment.php?action=approvecomment&p={$comment->comment_post_ID}&c={$comment->comment_ID}&{$approve_nonce}"); $unapprove_url = esc_url("comment.php?action=unapprovecomment&p={$comment->comment_post_ID}&c={$comment->comment_ID}&{$approve_nonce}"); $spam_url = esc_url("comment.php?action=spamcomment&p={$comment->comment_post_ID}&c={$comment->comment_ID}&{$del_nonce}"); $trash_url = esc_url("comment.php?action=trashcomment&p={$comment->comment_post_ID}&c={$comment->comment_ID}&{$del_nonce}"); $delete_url = esc_url("comment.php?action=deletecomment&p={$comment->comment_post_ID}&c={$comment->comment_ID}&{$del_nonce}"); $actions['approve'] = sprintf('<a href="%s" data-wp-lists="%s" class="vim-a aria-button-if-js" aria-label="%s">%s</a>', $approve_url, "dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved", esc_attr__('Approve this comment'), __('Approve')); $actions['unapprove'] = sprintf('<a href="%s" data-wp-lists="%s" class="vim-u aria-button-if-js" aria-label="%s">%s</a>', $unapprove_url, "dim:the-comment-list:comment-{$comment->comment_ID}:unapproved:e7e7d3:e7e7d3:new=unapproved", esc_attr__('Unapprove this comment'), __('Unapprove')); $actions['edit'] = sprintf('<a href="%s" aria-label="%s">%s</a>', "comment.php?action=editcomment&c={$comment->comment_ID}", esc_attr__('Edit this comment'), __('Edit')); $actions['reply'] = sprintf('<button type="button" onclick="window.commentReply && commentReply.open(\'%s\',\'%s\');" class="vim-r button-link hide-if-no-js" aria-label="%s">%s</button>', $comment->comment_ID, $comment->comment_post_ID, esc_attr__('Reply to this comment'), __('Reply')); $actions['spam'] = sprintf('<a href="%s" data-wp-lists="%s" class="vim-s vim-destructive aria-button-if-js" aria-label="%s">%s</a>', $spam_url, "delete:the-comment-list:comment-{$comment->comment_ID}::spam=1", esc_attr__('Mark this comment as spam'), _x('Spam', 'verb')); if (!EMPTY_TRASH_DAYS) { $actions['delete'] = sprintf('<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>', $delete_url, "delete:the-comment-list:comment-{$comment->comment_ID}::trash=1", esc_attr__('Delete this comment permanently'), __('Delete Permanently')); } else { $actions['trash'] = sprintf('<a href="%s" data-wp-lists="%s" class="delete vim-d vim-destructive aria-button-if-js" aria-label="%s">%s</a>', $trash_url, "delete:the-comment-list:comment-{$comment->comment_ID}::trash=1", esc_attr__('Move this comment to the Trash'), _x('Trash', 'verb')); } $actions['view'] = sprintf('<a class="comment-link" href="%s" aria-label="%s">%s</a>', esc_url(get_comment_link($comment)), esc_attr__('View this comment'), __('View')); $actions = apply_filters('comment_row_actions', array_filter($actions), $comment); $i = 0; foreach ($actions as $action => $link) { ++$i; if (('approve' === $action || 'unapprove' === $action) && 2 === $i || 1 === $i) { $sep = ''; } else { $sep = ' | '; } if ('reply' === $action || 'quickedit' === $action) { $action .= ' hide-if-no-js'; } if ('view' === $action && '1' !== $comment->comment_approved) { $action .= ' hidden'; } $actions_string .= "<span class='{$action}'>{$sep}{$link}</span>"; } } ?> <li id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class(array('comment-item', wp_get_comment_status($comment)), $comment); ?>> <?php $comment_row_class = ''; if (get_option('show_avatars')) { echo get_avatar($comment, 50, 'mystery'); $comment_row_class .= ' has-avatar'; } ?> <?php if (!$comment->comment_type || 'comment' === $comment->comment_type) { ?> <div class="dashboard-comment-wrap has-row-actions <?php echo $comment_row_class; ?>"> <p class="comment-meta"> <?php if ($comment_post_link) { printf(__('From %1$s on %2$s %3$s'), '<cite class="comment-author">' . get_comment_author_link($comment) . '</cite>', $comment_post_link, '<span class="approve">' . __('[Pending]') . '</span>'); } else { printf(__('From %1$s %2$s'), '<cite class="comment-author">' . get_comment_author_link($comment) . '</cite>', '<span class="approve">' . __('[Pending]') . '</span>'); } ?> </p> <?php } else { switch ($comment->comment_type) { case 'pingback': $type = __('Pingback'); break; case 'trackback': $type = __('Trackback'); break; default: $type = ucwords($comment->comment_type); } $type = esc_html($type); ?> <div class="dashboard-comment-wrap has-row-actions"> <p class="comment-meta"> <?php if ($comment_post_link) { printf(_x('%1$s on %2$s %3$s', 'dashboard'), "<strong>{$type}</strong>", $comment_post_link, '<span class="approve">' . __('[Pending]') . '</span>'); } else { printf(_x('%1$s %2$s', 'dashboard'), "<strong>{$type}</strong>", '<span class="approve">' . __('[Pending]') . '</span>'); } ?> </p> <p class="comment-author"><?php comment_author_link($comment); ?></p> <?php } ?> <blockquote><p><?php comment_excerpt($comment); ?></p></blockquote> <?php if ($actions_string) { ?> <p class="row-actions"><?php echo $actions_string; ?></p> <?php } ?> </div> </li> <?php $GLOBALS['comment'] = null; } function wp_dashboard_site_activity() { echo '<div id="activity-widget">'; $future_posts = wp_dashboard_recent_posts(array('max' => 5, 'status' => 'future', 'order' => 'ASC', 'title' => __('Publishing Soon'), 'id' => 'future-posts')); $recent_posts = wp_dashboard_recent_posts(array('max' => 5, 'status' => 'publish', 'order' => 'DESC', 'title' => __('Recently Published'), 'id' => 'published-posts')); $recent_comments = wp_dashboard_recent_comments(); if (!$future_posts && !$recent_posts && !$recent_comments) { echo '<div class="no-activity">'; echo '<p>' . __('No activity yet!') . '</p>'; echo '</div>'; } echo '</div>'; } function wp_dashboard_recent_posts($args) { $query_args = array('post_type' => 'post', 'post_status' => $args['status'], 'orderby' => 'date', 'order' => $args['order'], 'posts_per_page' => (int) $args['max'], 'no_found_rows' => true, 'cache_results' => false, 'perm' => 'future' === $args['status'] ? 'editable' : 'readable'); $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 = current_time('Y-m-d'); $tomorrow = current_datetime()->modify('+1 day')->format('Y-m-d'); $year = current_time('Y'); while ($posts->have_posts()) { $posts->the_post(); $time = get_the_time('U'); if (gmdate('Y-m-d', $time) == $today) { $relative = __('Today'); } elseif (gmdate('Y-m-d', $time) == $tomorrow) { $relative = __('Tomorrow'); } elseif (gmdate('Y', $time) !== $year) { $relative = date_i18n(__('M jS Y'), $time); } else { $relative = date_i18n(__('M jS'), $time); } $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>', sprintf(_x('%1$s, %2$s', 'dashboard'), $relative, get_the_time()), $recent_post_link, 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; } function wp_dashboard_recent_comments($total_items = 5) { $comments = array(); $comments_query = array('number' => $total_items * 5, 'offset' => 0); if (!current_user_can('edit_posts')) { $comments_query['status'] = 'approve'; } while (count($comments) < $total_items && ($possible = get_comments($comments_query))) { if (!is_array($possible)) { break; } foreach ($possible as $comment) { if (!current_user_can('read_post', $comment->comment_post_ID)) { continue; } $comments[] = $comment; if (count($comments) == $total_items) { break 2; } } $comments_query['offset'] += $comments_query['number']; $comments_query['number'] = $total_items * 10; } if ($comments) { echo '<div id="latest-comments" class="activity-block table-view-list">'; echo '<h3>' . __('Recent Comments') . '</h3>'; echo '<ul id="the-comment-list" data-wp-lists="list:comment">'; foreach ($comments as $comment) { _wp_dashboard_recent_comments_row($comment); } echo '</ul>'; if (current_user_can('edit_posts')) { echo '<h3 class="screen-reader-text">' . __('View more comments') . '</h3>'; _get_list_table('WP_Comments_List_Table')->views(); } wp_comment_reply(-1, false, 'dashboard', false); wp_comment_trashnotice(); echo '</div>'; } else { return false; } return true; } function wp_dashboard_rss_output($widget_id) { $widgets = get_option('dashboard_widget_options'); echo '<div class="rss-widget">'; wp_widget_rss_output($widgets[$widget_id]); echo '</div>'; } function wp_dashboard_cached_rss_widget($widget_id, $callback, $check_urls = array(), ...$args) { $loading = '<p class="widget-loading hide-if-no-js">' . __('Loading…') . '</p><div class="hide-if-js notice notice-error inline"><p>' . __('This widget requires JavaScript.') . '</p></div>'; $doing_ajax = wp_doing_ajax(); if (empty($check_urls)) { $widgets = get_option('dashboard_widget_options'); if (empty($widgets[$widget_id]['url']) && !$doing_ajax) { echo $loading; return false; } $check_urls = array($widgets[$widget_id]['url']); } $locale = get_user_locale(); $cache_key = 'dash_v2_' . md5($widget_id . '_' . $locale); $output = get_transient($cache_key); if (false !== $output) { echo $output; return true; } if (!$doing_ajax) { echo $loading; return false; } if ($callback && is_callable($callback)) { array_unshift($args, $widget_id, $check_urls); ob_start(); call_user_func_array($callback, $args); set_transient($cache_key, ob_get_flush(), 12 * HOUR_IN_SECONDS); } return true; } function wp_dashboard_trigger_widget_control($widget_control_id = false) { global $wp_dashboard_control_callbacks; if (is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id])) { call_user_func($wp_dashboard_control_callbacks[$widget_control_id], '', array('id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id])); } } function wp_dashboard_rss_control($widget_id, $form_inputs = array()) { $widget_options = get_option('dashboard_widget_options'); if (!$widget_options) { $widget_options = array(); } if (!isset($widget_options[$widget_id])) { $widget_options[$widget_id] = array(); } $number = 1; $widget_options[$widget_id]['number'] = $number; if ('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number])) { $_POST['widget-rss'][$number] = wp_unslash($_POST['widget-rss'][$number]); $widget_options[$widget_id] = wp_widget_rss_process($_POST['widget-rss'][$number]); $widget_options[$widget_id]['number'] = $number; if (!$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title'])) { $rss = fetch_feed($widget_options[$widget_id]['url']); if (is_wp_error($rss)) { $widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed')); } else { $widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title())); $rss->__destruct(); unset($rss); } } update_option('dashboard_widget_options', $widget_options); $locale = get_user_locale(); $cache_key = 'dash_v2_' . md5($widget_id . '_' . $locale); delete_transient($cache_key); } wp_widget_rss_form($widget_options[$widget_id], $form_inputs); } function wp_dashboard_events_news() { wp_print_community_events_markup(); ?> <div class="wordpress-news hide-if-no-js"> <?php wp_dashboard_primary(); ?> </div> <p class="community-events-footer"> <?php printf('<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', 'https://make.wordpress.org/community/meetups-landing-page', __('Meetups'), __('(opens in a new tab)')); ?> | <?php printf('<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', 'https://central.wordcamp.org/schedule/', __('WordCamps'), __('(opens in a new tab)')); ?> | <?php printf('<a href="%1$s" target="_blank">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', esc_url(_x('https://wordpress.org/news/', 'Events and News dashboard widget')), __('News'), __('(opens in a new tab)')); ?> </p> <?php } function wp_print_community_events_markup() { ?> <div class="community-events-errors notice notice-error inline hide-if-js"> <p class="hide-if-js"> <?php _e('This widget requires JavaScript.'); ?> </p> <p class="community-events-error-occurred" aria-hidden="true"> <?php _e('An error occurred. Please try again.'); ?> </p> <p class="community-events-could-not-locate" aria-hidden="true"></p> </div> <div class="community-events-loading hide-if-no-js"> <?php _e('Loading…'); ?> </div> <?php ?> <div id="community-events" class="community-events" aria-hidden="true"> <div class="activity-block"> <p> <span id="community-events-location-message"></span> <button class="button-link community-events-toggle-location" aria-label="<?php esc_attr_e('Edit city'); ?>" aria-expanded="false"> <span class="dashicons dashicons-edit"></span> </button> </p> <form class="community-events-form" aria-hidden="true" action="<?php echo esc_url(admin_url('admin-ajax.php')); ?>" method="post"> <label for="community-events-location"> <?php _e('City:'); ?> </label> <?php ?> <input id="community-events-location" class="regular-text" type="text" name="community-events-location" placeholder="<?php esc_attr_e('Cincinnati'); ?>" /> <?php submit_button(__('Submit'), 'secondary', 'community-events-submit', false); ?> <button class="community-events-cancel button-link" type="button" aria-expanded="false"> <?php _e('Cancel'); ?> </button> <span class="spinner"></span> </form> </div> <ul class="community-events-results activity-block last"></ul> </div> <?php } function wp_print_community_events_templates() { ?> <script id="tmpl-community-events-attend-event-near" type="text/template"> <?php printf(__('Attend an upcoming event near %s.'), '<strong>{{ data.location.description }}</strong>'); ?> </script> <script id="tmpl-community-events-could-not-locate" type="text/template"> <?php printf(__('We couldn’t locate %s. Please try another nearby city. For example: Kansas City; Springfield; Portland.'), '<em>{{data.unknownCity}}</em>'); ?> </script> <script id="tmpl-community-events-event-list" type="text/template"> <# _.each( data.events, function( event ) { #> <li class="event event-{{ event.type }} wp-clearfix"> <div class="event-info"> <div class="dashicons event-icon" aria-hidden="true"></div> <div class="event-info-inner"> <a class="event-title" href="{{ event.url }}">{{ event.title }}</a> <span class="event-city">{{ event.location.location }}</span> </div> </div> <div class="event-date-time"> <span class="event-date">{{ event.user_formatted_date }}</span> <# if ( 'meetup' === event.type ) { #> <span class="event-time"> {{ event.user_formatted_time }} {{ event.timeZoneAbbreviation }} </span> <# } #> </div> </li> <# } ) #> <# if ( data.events.length <= 2 ) { #> <li class="event-none"> <?php printf(__('Want more events? <a href="%s">Help organize the next one</a>!'), __('https://make.wordpress.org/community/organize-event-landing-page/')); ?> </li> <# } #> </script> <script id="tmpl-community-events-no-upcoming-events" type="text/template"> <li class="event-none"> <# if ( data.location.description ) { #> <?php printf(__('There aren’t any events scheduled near %1$s at the moment. Would you like to <a href="%2$s">organize a WordPress event</a>?'), '{{ data.location.description }}', __('https://make.wordpress.org/community/handbook/meetup-organizer/welcome/')); ?> <# } else { #> <?php printf(__('There aren’t any events scheduled near you at the moment. Would you like to <a href="%s">organize a WordPress event</a>?'), __('https://make.wordpress.org/community/handbook/meetup-organizer/welcome/')); ?> <# } #> </li> </script> <?php } function wp_dashboard_primary() { $feeds = array('news' => array('link' => apply_filters('dashboard_primary_link', __('https://wordpress.org/news/')), 'url' => apply_filters('dashboard_primary_feed', __('https://wordpress.org/news/feed/')), 'title' => apply_filters('dashboard_primary_title', __('WordPress Blog')), 'items' => 2, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0), 'planet' => array('link' => apply_filters('dashboard_secondary_link', __('https://planet.wordpress.org/')), 'url' => apply_filters('dashboard_secondary_feed', __('https://planet.wordpress.org/feed/')), 'title' => apply_filters('dashboard_secondary_title', __('Other WordPress News')), 'items' => apply_filters('dashboard_secondary_items', 3), 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0)); wp_dashboard_cached_rss_widget('dashboard_primary', 'wp_dashboard_primary_output', $feeds); } function wp_dashboard_primary_output($widget_id, $feeds) { foreach ($feeds as $type => $args) { $args['type'] = $type; echo '<div class="rss-widget">'; wp_widget_rss_output($args['url'], $args); echo '</div>'; } } function wp_dashboard_quota() { if (!is_multisite() || !current_user_can('upload_files') || get_site_option('upload_space_check_disabled')) { return true; } $quota = get_space_allowed(); $used = get_space_used(); if ($used > $quota) { $percentused = '100'; } else { $percentused = $used / $quota * 100; } $used_class = $percentused >= 70 ? ' warning' : ''; $used = round($used, 2); $percentused = number_format($percentused); ?> <h3 class="mu-storage"><?php _e('Storage Space'); ?></h3> <div class="mu-storage"> <ul> <li class="storage-count"> <?php $text = sprintf(__('%s MB Space Allowed'), number_format_i18n($quota)); printf('<a href="%1$s">%2$s <span class="screen-reader-text">(%3$s)</span></a>', esc_url(admin_url('upload.php')), $text, __('Manage Uploads')); ?> </li><li class="storage-count <?php echo $used_class; ?>"> <?php $text = sprintf(__('%1$s MB (%2$s%%) Space Used'), number_format_i18n($used, 2), $percentused); printf('<a href="%1$s" class="musublink">%2$s <span class="screen-reader-text">(%3$s)</span></a>', esc_url(admin_url('upload.php')), $text, __('Manage Uploads')); ?> </li> </ul> </div> <?php } function wp_dashboard_browser_nag() { $notice = ''; $response = wp_check_browser_version(); if ($response) { if ($response['insecure']) { $msg = sprintf(__("It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser."), sprintf('<a href="%s">%s</a>', esc_url($response['update_url']), esc_html($response['name']))); } else { $msg = sprintf(__("It looks like you're using an old version of %s. For the best WordPress experience, please update your browser."), sprintf('<a href="%s">%s</a>', esc_url($response['update_url']), esc_html($response['name']))); } $browser_nag_class = ''; if (!empty($response['img_src'])) { $img_src = is_ssl() && !empty($response['img_src_ssl']) ? $response['img_src_ssl'] : $response['img_src']; $notice .= '<div class="alignright browser-icon"><a href="' . esc_attr($response['update_url']) . '"><img src="' . esc_attr($img_src) . '" alt="" /></a></div>'; $browser_nag_class = ' has-browser-icon'; } $notice .= "<p class='browser-update-nag{$browser_nag_class}'>{$msg}</p>"; $browsehappy = 'https://browsehappy.com/'; $locale = get_user_locale(); if ('en_US' !== $locale) { $browsehappy = add_query_arg('locale', $locale, $browsehappy); } $notice .= '<p>' . sprintf(__('<a href="%1$s" class="update-browser-link">Update %2$s</a> or learn how to <a href="%3$s" class="browse-happy-link">browse happy</a>'), esc_attr($response['update_url']), esc_html($response['name']), esc_url($browsehappy)) . '</p>'; $notice .= '<p class="hide-if-no-js"><a href="" class="dismiss" aria-label="' . esc_attr__('Dismiss the browser warning panel') . '">' . __('Dismiss') . '</a></p>'; $notice .= '<div class="clear"></div>'; } echo apply_filters('browse-happy-notice', $notice, $response); } function dashboard_browser_nag_class($classes) { $response = wp_check_browser_version(); if ($response && $response['insecure']) { $classes[] = 'browser-insecure'; } return $classes; } function wp_check_browser_version() { if (empty($_SERVER['HTTP_USER_AGENT'])) { return false; } $key = md5($_SERVER['HTTP_USER_AGENT']); $response = get_site_transient('browser_' . $key); if (false === $response) { require ABSPATH . WPINC . '/version.php'; $url = 'http://api.wordpress.org/core/browse-happy/1.1/'; $options = array('body' => array('useragent' => $_SERVER['HTTP_USER_AGENT']), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url('/')); if (wp_http_supports(array('ssl'))) { $url = set_url_scheme($url, 'https'); } $response = wp_remote_post($url, $options); if (is_wp_error($response) || 200 != wp_remote_retrieve_response_code($response)) { return false; } $response = json_decode(wp_remote_retrieve_body($response), true); if (!is_array($response)) { return false; } set_site_transient('browser_' . $key, $response, WEEK_IN_SECONDS); } return $response; } function wp_dashboard_php_nag() { $response = wp_check_php_version(); if (!$response) { return; } if (isset($response['is_secure']) && !$response['is_secure']) { $msg = sprintf(__('Your site is running an insecure version of PHP (%s), which should be updated.'), PHP_VERSION); } else { $msg = sprintf(__('Your site is running an outdated version of PHP (%s), which should be updated.'), PHP_VERSION); } ?> <p><?php echo $msg; ?></p> <h3><?php _e('What is PHP and how does it affect my site?'); ?></h3> <p> <?php printf(__('PHP is the programming language used to build and maintain WordPress. Newer versions of PHP are created with increased performance in mind, so you may see a positive effect on your site’s performance. The minimum recommended version of PHP is %s.'), $response ? $response['recommended_version'] : ''); ?> </p> <p class="button-container"> <?php printf('<a class="button button-primary" href="%1$s" target="_blank" rel="noopener">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>', esc_url(wp_get_update_php_url()), __('Learn more about updating PHP'), __('(opens in a new tab)')); ?> </p> <?php wp_update_php_annotation(); wp_direct_php_update_button(); } function dashboard_php_nag_class($classes) { $response = wp_check_php_version(); if ($response && isset($response['is_secure']) && !$response['is_secure']) { $classes[] = 'php-insecure'; } return $classes; } function wp_dashboard_site_health() { $get_issues = get_transient('health-check-site-status-result'); $issue_counts = array(); if (false !== $get_issues) { $issue_counts = json_decode($get_issues, true); } if (!is_array($issue_counts) || !$issue_counts) { $issue_counts = array('good' => 0, 'recommended' => 0, 'critical' => 0); } $issues_total = $issue_counts['recommended'] + $issue_counts['critical']; ?> <div class="health-check-title-section site-health-progress-wrapper loading hide-if-no-js"> <div class="site-health-progress"> <svg role="img" aria-hidden="true" focusable="false" width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg"> <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle> <circle id="bar" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle> </svg> </div> <div class="site-health-progress-label"> <?php if (false === $get_issues) { ?> <?php _e('No information yet…'); ?> <?php } else { ?> <?php _e('Results are still loading…'); ?> <?php } ?> </div> </div> <?php if (false === $get_issues) { ?> <p> <?php printf(__('Site health checks will automatically run periodically to gather information about your site. You can also <a href="%s">visit the Site Health screen</a> to gather information about your site now.'), esc_url(admin_url('site-health.php'))); ?> </p> <?php } else { ?> <p> <?php if ($issue_counts['critical'] > 0) { ?> <?php _e('Your site has critical issues that should be addressed as soon as possible to improve its performance and security.'); ?> <?php } elseif ($issues_total <= 0) { ?> <?php _e('Great job! Your site currently passes all site health checks.'); ?> <?php } else { ?> <?php _e('Your site’s health is looking good, but there are still some things you can do to improve its performance and security.'); ?> <?php } ?> </p> <?php } ?> <?php if ($issues_total > 0 && false !== $get_issues) { ?> <p> <?php printf(_n('Take a look at the <strong>%1$d item</strong> on the <a href="%2$s">Site Health screen</a>.', 'Take a look at the <strong>%1$d items</strong> on the <a href="%2$s">Site Health screen</a>.', $issues_total), $issues_total, esc_url(admin_url('site-health.php'))); ?> </p> <?php } ?> <?php } function wp_dashboard_empty() { } function wp_welcome_panel() { ?> <div class="welcome-panel-content"> <h2><?php _e('Welcome to WordPress!'); ?></h2> <p class="about-description"><?php _e('We’ve assembled some links to get you started:'); ?></p> <div class="welcome-panel-column-container"> <div class="welcome-panel-column"> <?php if (current_user_can('customize')) { ?> <h3><?php _e('Get Started'); ?></h3> <a class="button button-primary button-hero load-customize hide-if-no-customize" href="<?php echo wp_customize_url(); ?>"><?php _e('Customize Your Site'); ?></a> <?php } ?> <a class="button button-primary button-hero hide-if-customize" href="<?php echo admin_url('themes.php'); ?>"><?php _e('Customize Your Site'); ?></a> <?php if (current_user_can('install_themes') || current_user_can('switch_themes') && count(wp_get_themes(array('allowed' => true))) > 1) { ?> <?php $themes_link = current_user_can('customize') ? add_query_arg('autofocus[panel]', 'themes', admin_url('customize.php')) : admin_url('themes.php'); ?> <p class="hide-if-no-customize"> <?php printf(__('or, <a href="%s">change your theme completely</a>'), $themes_link); ?> </p> <?php } ?> </div> <div class="welcome-panel-column"> <h3><?php _e('Next Steps'); ?></h3> <ul> <?php if ('page' === get_option('show_on_front') && !get_option('page_for_posts')) { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-edit-page">' . __('Edit your front page') . '</a>', get_edit_post_link(get_option('page_on_front'))); ?></li> <li><?php printf('<a href="%s" class="welcome-icon welcome-add-page">' . __('Add additional pages') . '</a>', admin_url('post-new.php?post_type=page')); ?></li> <?php } elseif ('page' === get_option('show_on_front')) { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-edit-page">' . __('Edit your front page') . '</a>', get_edit_post_link(get_option('page_on_front'))); ?></li> <li><?php printf('<a href="%s" class="welcome-icon welcome-add-page">' . __('Add additional pages') . '</a>', admin_url('post-new.php?post_type=page')); ?></li> <li><?php printf('<a href="%s" class="welcome-icon welcome-write-blog">' . __('Add a blog post') . '</a>', admin_url('post-new.php')); ?></li> <?php } else { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-write-blog">' . __('Write your first blog post') . '</a>', admin_url('post-new.php')); ?></li> <li><?php printf('<a href="%s" class="welcome-icon welcome-add-page">' . __('Add an About page') . '</a>', admin_url('post-new.php?post_type=page')); ?></li> <li><?php printf('<a href="%s" class="welcome-icon welcome-setup-home">' . __('Set up your homepage') . '</a>', current_user_can('customize') ? add_query_arg('autofocus[section]', 'static_front_page', admin_url('customize.php')) : admin_url('options-reading.php')); ?></li> <?php } ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-view-site">' . __('View your site') . '</a>', home_url('/')); ?></li> </ul> </div> <div class="welcome-panel-column welcome-panel-last"> <h3><?php _e('More Actions'); ?></h3> <ul> <?php if (current_theme_supports('widgets')) { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-widgets">' . __('Manage widgets') . '</a>', admin_url('widgets.php')); ?></li> <?php } ?> <?php if (current_theme_supports('menus')) { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-menus">' . __('Manage menus') . '</a>', admin_url('nav-menus.php')); ?></li> <?php } ?> <?php if (current_user_can('manage_options')) { ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-comments">' . __('Turn comments on or off') . '</a>', admin_url('options-discussion.php')); ?></li> <?php } ?> <li><?php printf('<a href="%s" class="welcome-icon welcome-learn-more">' . __('Learn more about getting started') . '</a>', __('https://wordpress.org/support/article/first-steps-with-wordpress/')); ?></li> </ul> </div> </div> </div> <?php }