File "dashboard.php"
Full path: /home/kosmetik/public_html/wp-includes/wp-admin/includes/dashboard.php
File
size: 48.72 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?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
}