From 30ccfd540f1c295d313bd38ecff01999a3c9e482 Mon Sep 17 00:00:00 2001
From: Andrew Ozz
Date: Fri, 12 Apr 2019 19:24:51 +0000
Subject: [PATCH] Site health: Load the "Info" tab immediately and notify the
user while gathering site data. Changes the Info tab to work similarly to the
Status tab: it does separate request to fetch the directories sizes and
doesn't "block" the loading of the page.
Props xkon, afercia, Clorith, azaozz.
See #46707.
Built from https://develop.svn.wordpress.org/trunk@45176
git-svn-id: http://core.svn.wordpress.org/trunk@44985 1a063a9b-81f0-0310-95a4-ce76da25c4cd
---
wp-admin/admin-ajax.php | 1 +
wp-admin/css/site-health-rtl.css | 7 +
wp-admin/css/site-health-rtl.min.css | 2 +-
wp-admin/css/site-health.css | 7 +
wp-admin/css/site-health.min.css | 2 +-
wp-admin/includes/ajax-actions.php | 49 +++++
wp-admin/includes/class-wp-debug-data.php | 243 ++++++++++++----------
wp-admin/js/site-health.js | 97 ++++++++-
wp-admin/js/site-health.min.js | 2 +-
wp-admin/site-health-info.php | 71 ++++---
wp-includes/version.php | 2 +-
11 files changed, 335 insertions(+), 148 deletions(-)
diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php
index e0194ceba8..8d412dd9b8 100644
--- a/wp-admin/admin-ajax.php
+++ b/wp-admin/admin-ajax.php
@@ -136,6 +136,7 @@ $core_actions_post = array(
'health-check-is-in-debug-mode',
'health-check-background-updates',
'health-check-loopback-requests',
+ 'health-check-get-sizes',
);
// Deprecated
diff --git a/wp-admin/css/site-health-rtl.css b/wp-admin/css/site-health-rtl.css
index 280f641879..9022a7e2f3 100644
--- a/wp-admin/css/site-health-rtl.css
+++ b/wp-admin/css/site-health-rtl.css
@@ -377,6 +377,13 @@
margin-right: 22px;
}
+.health-check-wp-paths-sizes.spinner {
+ position: absolute;
+ visibility: visible;
+ float: none;
+ margin: 0 4px;
+}
+
@media screen and (max-width: 782px) {
.health-check-body {
margin: 0 12px;
diff --git a/wp-admin/css/site-health-rtl.min.css b/wp-admin/css/site-health-rtl.min.css
index 3cca13d72f..35ce94d923 100644
--- a/wp-admin/css/site-health-rtl.min.css
+++ b/wp-admin/css/site-health-rtl.min.css
@@ -1,2 +1,2 @@
/*! This file is auto-generated */
-.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-right:0}.health-check-header h1{display:inline-block;font-weight:600;margin:1rem .8rem;font-size:23px;padding:9px 0 4px 0;line-height:1.3}.health-check-body h2{padding:1rem 0;line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #e2e4e7}.health-check-title-section{display:flex;align-items:center;justify-content:center;clear:both}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:6.3;font-size:2em}.site-health-progress-count::after{content:""}.site-health-progress.loading .site-health-progress-count::after{content:"···"}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}.health-check-tab{display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}.health-check-tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.health-check-body .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.health-check-body .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-right:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:2.2}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){.site-status-all-clear{margin:5rem 0}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.health-check-accordion{border:1px solid #e2e4e7}.health-check-accordion-heading{margin:0;border-top:1px solid #e2e4e7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:right;width:100%}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover{background:#f8f9f9}.health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}.health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}.health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}.health-check-accordion-trigger .badge{float:left;padding:.1rem .5rem .15rem;color:#32373c;font-weight:600;margin:0 .5rem 0 2rem}.health-check-accordion-trigger .badge.blue{border:1px solid #bfe7f3}.health-check-accordion-trigger .badge.orange{border:1px solid #ffb900}.health-check-accordion-trigger .badge.red{border:1px solid #dc3232}.health-check-accordion-trigger .badge.green{border:1px solid #46b450}.health-check-accordion-trigger .badge.purple{border:1px solid #826eb4}.health-check-accordion-trigger .badge.gray{border:1px solid #ccd0d4}.health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}.health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons{text-decoration:none}.site-health .notice{margin:5px 22px 15px 20px}.site-health .update-nag{margin-bottom:20px;margin-right:22px}@media screen and (max-width:782px){.health-check-body{margin:0 12px;width:auto}.site-health .notice{margin:5px 10px 15px}.site-health .update-nag{margin-left:10px;margin-right:10px}}@media only screen and (max-width:1004px){.health-check-body{margin:0 22px;width:auto}}
\ No newline at end of file
+.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-right:0}.health-check-header h1{display:inline-block;font-weight:600;margin:1rem .8rem;font-size:23px;padding:9px 0 4px 0;line-height:1.3}.health-check-body h2{padding:1rem 0;line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #e2e4e7}.health-check-title-section{display:flex;align-items:center;justify-content:center;clear:both}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:6.3;font-size:2em}.site-health-progress-count::after{content:""}.site-health-progress.loading .site-health-progress-count::after{content:"···"}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}.health-check-tab{display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}.health-check-tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.health-check-body .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.health-check-body .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-right:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:2.2}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){.site-status-all-clear{margin:5rem 0}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.health-check-accordion{border:1px solid #e2e4e7}.health-check-accordion-heading{margin:0;border-top:1px solid #e2e4e7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:right;width:100%}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover{background:#f8f9f9}.health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}.health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}.health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}.health-check-accordion-trigger .badge{float:left;padding:.1rem .5rem .15rem;color:#32373c;font-weight:600;margin:0 .5rem 0 2rem}.health-check-accordion-trigger .badge.blue{border:1px solid #bfe7f3}.health-check-accordion-trigger .badge.orange{border:1px solid #ffb900}.health-check-accordion-trigger .badge.red{border:1px solid #dc3232}.health-check-accordion-trigger .badge.green{border:1px solid #46b450}.health-check-accordion-trigger .badge.purple{border:1px solid #826eb4}.health-check-accordion-trigger .badge.gray{border:1px solid #ccd0d4}.health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}.health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons{text-decoration:none}.site-health .notice{margin:5px 22px 15px 20px}.site-health .update-nag{margin-bottom:20px;margin-right:22px}.health-check-wp-paths-sizes.spinner{position:absolute;visibility:visible;float:none;margin:0 4px}@media screen and (max-width:782px){.health-check-body{margin:0 12px;width:auto}.site-health .notice{margin:5px 10px 15px}.site-health .update-nag{margin-left:10px;margin-right:10px}}@media only screen and (max-width:1004px){.health-check-body{margin:0 22px;width:auto}}
\ No newline at end of file
diff --git a/wp-admin/css/site-health.css b/wp-admin/css/site-health.css
index 99b179dfe8..bcc69e1f02 100644
--- a/wp-admin/css/site-health.css
+++ b/wp-admin/css/site-health.css
@@ -377,6 +377,13 @@
margin-left: 22px;
}
+.health-check-wp-paths-sizes.spinner {
+ position: absolute;
+ visibility: visible;
+ float: none;
+ margin: 0 4px;
+}
+
@media screen and (max-width: 782px) {
.health-check-body {
margin: 0 12px;
diff --git a/wp-admin/css/site-health.min.css b/wp-admin/css/site-health.min.css
index 7f19bb0f53..03fb9946ac 100644
--- a/wp-admin/css/site-health.min.css
+++ b/wp-admin/css/site-health.min.css
@@ -1,2 +1,2 @@
/*! This file is auto-generated */
-.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-left:0}.health-check-header h1{display:inline-block;font-weight:600;margin:1rem .8rem;font-size:23px;padding:9px 0 4px 0;line-height:1.3}.health-check-body h2{padding:1rem 0;line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #e2e4e7}.health-check-title-section{display:flex;align-items:center;justify-content:center;clear:both}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:6.3;font-size:2em}.site-health-progress-count::after{content:""}.site-health-progress.loading .site-health-progress-count::after{content:"···"}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}.health-check-tab{display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}.health-check-tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.health-check-body .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.health-check-body .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-left:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:2.2}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){.site-status-all-clear{margin:5rem 0}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.health-check-accordion{border:1px solid #e2e4e7}.health-check-accordion-heading{margin:0;border-top:1px solid #e2e4e7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:left;width:100%}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover{background:#f8f9f9}.health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}.health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}.health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.health-check-accordion-trigger .badge{float:right;padding:.1rem .5rem .15rem;color:#32373c;font-weight:600;margin:0 2rem 0 .5rem}.health-check-accordion-trigger .badge.blue{border:1px solid #bfe7f3}.health-check-accordion-trigger .badge.orange{border:1px solid #ffb900}.health-check-accordion-trigger .badge.red{border:1px solid #dc3232}.health-check-accordion-trigger .badge.green{border:1px solid #46b450}.health-check-accordion-trigger .badge.purple{border:1px solid #826eb4}.health-check-accordion-trigger .badge.gray{border:1px solid #ccd0d4}.health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons{text-decoration:none}.site-health .notice{margin:5px 20px 15px 22px}.site-health .update-nag{margin-bottom:20px;margin-left:22px}@media screen and (max-width:782px){.health-check-body{margin:0 12px;width:auto}.site-health .notice{margin:5px 10px 15px}.site-health .update-nag{margin-right:10px;margin-left:10px}}@media only screen and (max-width:1004px){.health-check-body{margin:0 22px;width:auto}}
\ No newline at end of file
+.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-left:0}.health-check-header h1{display:inline-block;font-weight:600;margin:1rem .8rem;font-size:23px;padding:9px 0 4px 0;line-height:1.3}.health-check-body h2{padding:1rem 0;line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #e2e4e7}.health-check-title-section{display:flex;align-items:center;justify-content:center;clear:both}.site-health-progress{display:inline-block;height:40px;width:40px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:6.3;font-size:2em}.site-health-progress-count::after{content:""}.site-health-progress.loading .site-health-progress-count::after{content:"···"}.site-health-progress.loading svg #bar{stroke-dashoffset:0;stroke:#adc5d2;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#ccc;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#dc3232}.site-health-progress svg #bar.green{stroke:#46b450}.site-health-progress svg #bar.orange{stroke:#ffb900}@keyframes loadingPulse{0%{stroke:#adc5d2}50%{stroke:#00a0d2}100%{stroke:#adc5d2}}.health-check-tab{display:inline-block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:focus{color:#191e23;outline:1px solid #6c7781;box-shadow:none}.health-check-tab.active{box-shadow:inset 0 -3px #007cba;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";display:inline-block;color:#46b450;font-family:dashicons;vertical-align:top}.health-check-body .warning::before{content:"\f460";display:inline-block;color:#ffb900;font-family:dashicons}.health-check-body .info::before{content:"\f348";display:inline-block;color:#00a0d2;font-family:dashicons}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";display:inline-block;color:#dc3232;font-family:dashicons}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{margin:.5rem 0 1rem}.site-health-copy-buttons .success{display:none;color:#40860a;line-height:1.8;margin-left:.5rem}.site-health-copy-buttons .success.visible{display:inline-block;height:28px;line-height:2.2}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin-top:0}@media all and (min-width:784px){.site-status-all-clear{margin:5rem 0}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:130px;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.health-check-accordion{border:1px solid #e2e4e7}.health-check-accordion-heading{margin:0;border-top:1px solid #e2e4e7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger{background:#fff;border:0;color:#32373c;cursor:pointer;display:block;font-weight:400;margin:0;padding:1em 1.5em;position:relative;text-align:left;width:100%}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover{background:#f8f9f9}.health-check-accordion-trigger:focus{color:#191e23;border:none;box-shadow:none;outline-offset:-2px;outline:1px dotted #555d66}.health-check-accordion-trigger .title{display:inline-block;pointer-events:none;font-weight:600}.health-check-accordion-trigger .icon{border:solid #191e23;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.health-check-accordion-trigger .badge{float:right;padding:.1rem .5rem .15rem;color:#32373c;font-weight:600;margin:0 2rem 0 .5rem}.health-check-accordion-trigger .badge.blue{border:1px solid #bfe7f3}.health-check-accordion-trigger .badge.orange{border:1px solid #ffb900}.health-check-accordion-trigger .badge.red{border:1px solid #dc3232}.health-check-accordion-trigger .badge.green{border:1px solid #46b450}.health-check-accordion-trigger .badge.purple{border:1px solid #826eb4}.health-check-accordion-trigger .badge.gray{border:1px solid #ccd0d4}.health-check-accordion-trigger[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.health-check-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons{text-decoration:none}.site-health .notice{margin:5px 20px 15px 22px}.site-health .update-nag{margin-bottom:20px;margin-left:22px}.health-check-wp-paths-sizes.spinner{position:absolute;visibility:visible;float:none;margin:0 4px}@media screen and (max-width:782px){.health-check-body{margin:0 12px;width:auto}.site-health .notice{margin:5px 10px 15px}.site-health .update-nag{margin-right:10px;margin-left:10px}}@media only screen and (max-width:1004px){.health-check-body{margin:0 22px;width:auto}}
\ No newline at end of file
diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php
index 206fa189a4..89c8474222 100644
--- a/wp-admin/includes/ajax-actions.php
+++ b/wp-admin/includes/ajax-actions.php
@@ -4958,3 +4958,52 @@ function wp_ajax_health_check_site_status_result() {
wp_send_json_success();
}
+
+/**
+ * Ajax handler for site health check to get directories and database sizes.
+ *
+ * @since 5.2.0
+ */
+function wp_ajax_health_check_get_sizes() {
+ check_ajax_referer( 'health-check-site-status-result' );
+
+ if ( ! current_user_can( 'install_plugins' ) ) {
+ wp_send_json_error();
+ }
+
+ if ( ! class_exists( 'WP_Debug_Data' ) ) {
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-debug-data.php' );
+ }
+
+ $sizes_data = WP_Debug_Data::get_sizes();
+ $all_sizes = array();
+
+ foreach ( $sizes_data as $name => $value ) {
+ $name = sanitize_text_field( $name );
+ $data = array();
+
+ if ( isset( $value['size'] ) ) {
+ if ( is_string( $value['size'] ) ) {
+ $data['size'] = sanitize_text_field( $value['size'] );
+ } else {
+ $data['size'] = (int) $value['size'];
+ }
+ }
+
+ if ( isset( $value['debug'] ) ) {
+ if ( is_string( $value['debug'] ) ) {
+ $data['debug'] = sanitize_text_field( $value['debug'] );
+ } else {
+ $data['debug'] = (int) $value['debug'];
+ }
+ }
+
+ $all_sizes[ $name ] = $data;
+ }
+
+ if ( isset( $all_sizes['total_size']['debug'] ) && 'not available' === $all_sizes['total_size']['debug'] ) {
+ wp_send_json_error( $all_sizes );
+ }
+
+ wp_send_json_success( $all_sizes );
+}
diff --git a/wp-admin/includes/class-wp-debug-data.php b/wp-admin/includes/class-wp-debug-data.php
index 3f339acdc1..758ed51c24 100644
--- a/wp-admin/includes/class-wp-debug-data.php
+++ b/wp-admin/includes/class-wp-debug-data.php
@@ -387,110 +387,21 @@ class WP_Debug_Data {
);
}
- $size_db = WP_Debug_Data::get_database_size();
-
- /*
- * We will be using the PHP max execution time to prevent the size calculations
- * from causing a timeout. The default value is 30 seconds, and some
- * hosts do not allow you to read configuration values.
- */
- if ( function_exists( 'ini_get' ) ) {
- $max_execution_time = ini_get( 'max_execution_time' );
- }
-
- // The max_execution_time defaults to 0 when PHP runs from cli.
- // We still want to limit it below.
- if ( empty( $max_execution_time ) ) {
- $max_execution_time = 30;
- }
-
- // Here 20 seconds is a "sensible default" for how long to make the user wait for the directory size calculation.
- // When testing 20 seconds seem enough in nearly all cases. The remaining edge cases are likely testing or development sites
- // that have very large number of files, for example `node_modules` in plugins or themes, etc.
- if ( $max_execution_time > 20 ) {
- $max_execution_time = 20;
- } elseif ( $max_execution_time > 10 ) {
- // If the max_execution_time is set to lower than 20 seconds, reduce it a bit to prevent
- // edge-case timeouts that may happen after the size loop has finished running.
- $max_execution_time -= 1;
- }
-
- // Go through the various installation directories and calculate their sizes.
- $size_directories = array(
- 'wordpress' => array(
- 'path' => ABSPATH,
- 'size' => 0,
- ),
- 'themes' => array(
- 'path' => trailingslashit( get_theme_root() ),
- 'size' => 0,
- ),
- 'plugins' => array(
- 'path' => trailingslashit( WP_PLUGIN_DIR ),
- 'size' => 0,
- ),
- 'uploads' => array(
- 'path' => $upload_dir['basedir'],
- 'size' => 0,
- ),
- );
-
- $size_total = 0;
-
- // Loop over all the directories we want to gather the sizes for.
- foreach ( $size_directories as $size => $attributes ) {
- $dir_size = null; // Default to timeout.
-
- if ( microtime( true ) - WP_START_TIMESTAMP < $max_execution_time ) {
- $dir_size = get_dirsize( $attributes['path'], $max_execution_time );
- }
-
- if ( false === $dir_size ) {
- // Error reading.
- $size_directories[ $size ]['size'] = __( 'The size cannot be calculated. The directory is not accessible. Usually caused by invalid permissions.' );
- $size_directories[ $size ]['debug'] = 'not accessible';
-
- // Stop total size calculation.
- $size_total = null;
- } elseif ( null === $dir_size ) {
- // Timeout.
- $size_directories[ $size ]['size'] = __( 'The directory size calculation has timed out. Usually caused by a very large number of sub-directories and files.' );
- $size_directories[ $size ]['debug'] = 'timeout while calculating size';
-
- // Stop total size calculation.
- $size_total = null;
- } else {
- $is_subdir = ( strpos( $size_directories[ $size ]['path'], ABSPATH ) === 0 );
-
- // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
- if ( null !== $size_total && ( 'wordpress' === $size || ! $is_subdir ) ) {
- $size_total += $dir_size;
- }
-
- $size_directories[ $size ]['size'] = size_format( $dir_size, 2 );
- $size_directories[ $size ]['debug'] = $size_directories[ $size ]['size'];
- }
- }
-
- if ( null !== $size_total && $size_db > 0 ) {
- $size_total = size_format( $size_total + $size_db, 2 );
- } else {
- $size_total = 0;
- }
+ $not_calculated = __( 'Not calculated' );
$info['wp-paths-sizes']['fields'] = array(
'uploads_path' => array(
'label' => __( 'Uploads Directory Location' ),
- 'value' => $size_directories['uploads']['path'],
+ 'value' => $upload_dir['basedir'],
),
'uploads_size' => array(
'label' => __( 'Uploads Directory Size' ),
- 'value' => $size_directories['uploads']['size'],
- 'debug' => $size_directories['uploads']['debug'],
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
'themes_path' => array(
'label' => __( 'Themes Directory Location' ),
- 'value' => $size_directories['themes']['path'],
+ 'value' => trailingslashit( get_theme_root() ),
),
'current_theme_path' => array(
'label' => __( 'Current Theme Directory' ),
@@ -498,35 +409,36 @@ class WP_Debug_Data {
),
'themes_size' => array(
'label' => __( 'Themes Directory Size' ),
- 'value' => $size_directories['themes']['size'],
- 'debug' => $size_directories['themes']['debug'],
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
'plugins_path' => array(
'label' => __( 'Plugins Directory Location' ),
- 'value' => $size_directories['plugins']['path'],
+ 'value' => trailingslashit( WP_PLUGIN_DIR ),
),
'plugins_size' => array(
'label' => __( 'Plugins Directory Size' ),
- 'value' => $size_directories['plugins']['size'],
- 'debug' => $size_directories['plugins']['debug'],
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
'wordpress_path' => array(
'label' => __( 'WordPress Directory Location' ),
- 'value' => $size_directories['wordpress']['path'],
+ 'value' => ABSPATH,
),
'wordpress_size' => array(
'label' => __( 'WordPress Directory Size' ),
- 'value' => $size_directories['wordpress']['size'],
- 'debug' => $size_directories['wordpress']['debug'],
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
'database_size' => array(
'label' => __( 'Database size' ),
- 'value' => size_format( $size_db, 2 ),
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
'total_size' => array(
'label' => __( 'Total installation size' ),
- 'value' => $size_total > 0 ? $size_total : __( 'Total size is not available. Some errors were encountered when determining the size of your installation.' ),
- 'debug' => $size_total > 0 ? $size_total : 'not available',
+ 'value' => $not_calculated,
+ 'debug' => 'not calculated',
),
);
@@ -1188,4 +1100,125 @@ class WP_Debug_Data {
return (int) $size;
}
+
+ /**
+ * Fetch the sizes of the WordPress directories: `wordpress` (ABSPATH), `plugins`, `themes`, and `uploads`.
+ * Intended to supplement the array returned by `WP_Debug_Data::debug_data()`.
+ *
+ * @since 5.2.0
+ *
+ * @return array The sizes of the directories, also the database size and total installation size.
+ */
+ public static function get_sizes() {
+ $size_db = self::get_database_size();
+ $upload_dir = wp_get_upload_dir();
+
+ /*
+ * We will be using the PHP max execution time to prevent the size calculations
+ * from causing a timeout. The default value is 30 seconds, and some
+ * hosts do not allow you to read configuration values.
+ */
+ if ( function_exists( 'ini_get' ) ) {
+ $max_execution_time = ini_get( 'max_execution_time' );
+ }
+
+ // The max_execution_time defaults to 0 when PHP runs from cli.
+ // We still want to limit it below.
+ if ( empty( $max_execution_time ) ) {
+ $max_execution_time = 30;
+ }
+
+ if ( $max_execution_time > 20 ) {
+ // If the max_execution_time is set to lower than 20 seconds, reduce it a bit to prevent
+ // edge-case timeouts that may happen after the size loop has finished running.
+ $max_execution_time -= 2;
+ }
+
+ // Go through the various installation directories and calculate their sizes.
+ $all_sizes = array(
+ 'wordpress_size' => array(
+ 'path' => ABSPATH,
+ 'size' => 0,
+ ),
+ 'themes_size' => array(
+ 'path' => trailingslashit( get_theme_root() ),
+ 'size' => 0,
+ ),
+ 'plugins_size' => array(
+ 'path' => trailingslashit( WP_PLUGIN_DIR ),
+ 'size' => 0,
+ ),
+ 'uploads_size' => array(
+ 'path' => $upload_dir['basedir'],
+ 'size' => 0,
+ ),
+ );
+
+ $size_total = 0;
+
+ // Loop over all the directories we want to gather the sizes for.
+ foreach ( $all_sizes as $name => $attributes ) {
+ $dir_size = null; // Default to timeout.
+
+ if ( microtime( true ) - WP_START_TIMESTAMP < $max_execution_time ) {
+ $dir_size = recurse_dirsize( $attributes['path'], null, $max_execution_time );
+ }
+
+ if ( false === $dir_size ) {
+ // Error reading.
+ $all_sizes[ $name ]['size'] = __( 'The size cannot be calculated. The directory is not accessible. Usually caused by invalid permissions.' );
+ $all_sizes[ $name ]['debug'] = 'not accessible';
+
+ // Stop total size calculation.
+ $size_total = null;
+ } elseif ( null === $dir_size ) {
+ // Timeout.
+ $all_sizes[ $name ]['size'] = __( 'The directory size calculation has timed out. Usually caused by a very large number of sub-directories and files.' );
+ $all_sizes[ $name ]['debug'] = 'timeout while calculating size';
+
+ // Stop total size calculation.
+ $size_total = null;
+ } else {
+ $is_subdir = ( strpos( $attributes['path'], ABSPATH ) === 0 );
+
+ // phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled
+ if ( null !== $size_total && ( 'wordpress_size' === $name || ! $is_subdir ) ) {
+ $size_total += $dir_size;
+ }
+
+ $all_sizes[ $name ]['size'] = size_format( $dir_size, 2 );
+ $all_sizes[ $name ]['debug'] = $all_sizes[ $name ]['size'];
+ }
+ }
+
+ if ( $size_db > 0 ) {
+ $database_size = size_format( $size_db, 2 );
+
+ $all_sizes['database_size'] = array(
+ 'size' => $database_size,
+ 'debug' => $database_size,
+ );
+ } else {
+ $all_sizes['database_size'] = array(
+ 'size' => __( 'Not available' ),
+ 'debug' => 'not available',
+ );
+ }
+
+ if ( null !== $size_total && $size_db > 0 ) {
+ $total_size = size_format( $size_total + $size_db, 2 );
+
+ $all_sizes['total_size'] = array(
+ 'size' => $total_size,
+ 'debug' => $total_size,
+ );
+ } else {
+ $all_sizes['total_size'] = array(
+ 'size' => __( 'Total size is not available. Some errors were encountered when determining the size of your installation.' ),
+ 'debug' => 'not available',
+ );
+ }
+
+ return $all_sizes;
+ }
}
diff --git a/wp-admin/js/site-health.js b/wp-admin/js/site-health.js
index 1a31be1b5e..d2fbc32f44 100644
--- a/wp-admin/js/site-health.js
+++ b/wp-admin/js/site-health.js
@@ -9,8 +9,8 @@
jQuery( document ).ready( function( $ ) {
var data;
-
var clipboard = new ClipboardJS( '.site-health-copy-buttons .copy-button' );
+ var isDebugTab = $( '.health-check-body.health-check-debug-tab' ).length;
// Debug information copy section.
clipboard.on( 'success', function( e ) {
@@ -118,16 +118,18 @@ jQuery( document ).ready( function( $ ) {
$progressCount.text( val + '%' );
- $.post(
- ajaxurl,
- {
- 'action': 'health-check-site-status-result',
- '_wpnonce': SiteHealth.nonce.site_status_result,
- 'counts': SiteHealth.site_status.issues
- }
- );
+ if ( ! isDebugTab ) {
+ $.post(
+ ajaxurl,
+ {
+ 'action': 'health-check-site-status-result',
+ '_wpnonce': SiteHealth.nonce.site_status_result,
+ 'counts': SiteHealth.site_status.issues
+ }
+ );
- wp.a11y.speak( SiteHealth.string.site_health_complete_screen_reader.replace( '%s', val + '%' ) );
+ wp.a11y.speak( SiteHealth.string.site_health_complete_screen_reader.replace( '%s', val + '%' ) );
+ }
}
/**
@@ -171,7 +173,7 @@ jQuery( document ).ready( function( $ ) {
}
}
- if ( 'undefined' !== typeof SiteHealth ) {
+ if ( 'undefined' !== typeof SiteHealth && ! isDebugTab ) {
if ( 0 === SiteHealth.site_status.direct.length && 0 === SiteHealth.site_status.async.length ) {
RecalculateProgression();
} else {
@@ -209,4 +211,77 @@ jQuery( document ).ready( function( $ ) {
}
}
+ function getDirectorySizes() {
+ var data = {
+ action: 'health-check-get-sizes',
+ _wpnonce: SiteHealth.nonce.site_status_result
+ };
+
+ var timestamp = ( new Date().getTime() );
+
+ // After 3 seconds announce that we're still waiting for directory sizes.
+ var timeout = window.setTimeout( function() {
+ wp.a11y.speak( SiteHealth.string.please_wait );
+ }, 3000 );
+
+ $.post( {
+ type: 'POST',
+ url: ajaxurl,
+ data: data,
+ dataType: 'json'
+ } ).done( function( response ) {
+ updateDirSizes( response.data || {} );
+ } ).always( function() {
+ var delay = ( new Date().getTime() ) - timestamp;
+
+ $( '.health-check-wp-paths-sizes.spinner' ).css( 'visibility', 'hidden' );
+ RecalculateProgression();
+
+ if ( delay > 3000 ) {
+ // We have announced that we're waiting.
+ // Announce that we're ready after giving at least 3 seconds for the first announcement
+ // to be read out, or the two may collide.
+ if ( delay > 6000 ) {
+ delay = 0;
+ } else {
+ delay = 6500 - delay;
+ }
+
+ window.setTimeout( function() {
+ wp.a11y.speak( SiteHealth.string.site_health_complete );
+ }, delay );
+ } else {
+ // Cancel the announcement.
+ window.clearTimeout( timeout );
+ }
+ } );
+ }
+
+ function updateDirSizes( data ) {
+ var copyButton = $( 'button.button.copy-button' );
+ var clipdoardText = copyButton.attr( 'data-clipboard-text' );
+
+ $.each( data, function( name, value ) {
+ var text = value.debug || value.size;
+
+ if ( typeof text !== 'undefined' ) {
+ clipdoardText = clipdoardText.replace( name + ': not calculated', name + ': ' + text );
+ }
+ } );
+
+ copyButton.attr( 'data-clipboard-text', clipdoardText );
+
+ $( '#health-check-accordion-block-wp-paths-sizes' ).find( 'td[class]' ).each( function( i, element ) {
+ var td = $( element );
+ var name = td.attr( 'class' );
+
+ if ( data.hasOwnProperty( name ) && data[ name ].size ) {
+ td.text( data[ name ].size );
+ }
+ } );
+ }
+
+ if ( isDebugTab ) {
+ getDirectorySizes();
+ }
} );
diff --git a/wp-admin/js/site-health.min.js b/wp-admin/js/site-health.min.js
index c882b115b1..3a88b0fcb8 100644
--- a/wp-admin/js/site-health.min.js
+++ b/wp-admin/js/site-health.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(a){function b(b){var c=wp.template("health-check-issue"),d=a("#health-check-issues-"+b.status),e=a(".issue-count",d);SiteHealth.site_status.issues[b.status]++,e.text(SiteHealth.site_status.issues[b.status]),a(".issues","#health-check-issues-"+b.status).append(c(b))}function c(){var b,c,d,e=a(".site-health-progress"),f=e.find(".site-health-progress-count"),g=a(".site-health-progress svg #bar"),h=parseInt(SiteHealth.site_status.issues.good,0)+parseInt(SiteHealth.site_status.issues.recommended,0)+1.5*parseInt(SiteHealth.site_status.issues.critical,0),i=parseInt(SiteHealth.site_status.issues.recommended,0)+1.5*parseInt(SiteHealth.site_status.issues.critical,0),j=100-Math.ceil(i/h*100);return 0===h?void e.addClass("hidden"):(e.removeClass("loading"),b=g.attr("r"),c=Math.PI*(2*b),0>j&&(j=0),100parseInt(SiteHealth.site_status.issues.critical,0)&&a("#health-check-issues-critical").addClass("hidden"),1>parseInt(SiteHealth.site_status.issues.recommended,0)&&a("#health-check-issues-recommended").addClass("hidden"),50<=j&&g.addClass("orange").removeClass("red"),90<=j&&g.addClass("green").removeClass("orange"),100===j&&(a(".site-status-all-clear").removeClass("hide"),a(".site-status-has-issues").addClass("hide")),f.text(j+"%"),a.post(ajaxurl,{action:"health-check-site-status-result",_wpnonce:SiteHealth.nonce.site_status_result,counts:SiteHealth.site_status.issues}),void wp.a11y.speak(SiteHealth.string.site_health_complete_screen_reader.replace("%s",j+"%")))}function d(){var e=!0;1<=SiteHealth.site_status.async.length&&a.each(SiteHealth.site_status.async,function(){var c={action:"health-check-"+this.test.replace("_","-"),_wpnonce:SiteHealth.nonce.site_status};return!!this.completed||(e=!1,this.completed=!0,a.post(ajaxurl,c,function(a){b(a.data),d()}),!1)}),e&&c()}var e,f=new ClipboardJS(".site-health-copy-buttons .copy-button");f.on("success",function(b){var c=a(b.trigger).closest("div");a(".success",c).addClass("visible"),wp.a11y.speak(SiteHealth.string.site_info_copied)}),a(".health-check-accordion").on("click",".health-check-accordion-trigger",function(){var b="true"===a(this).attr("aria-expanded");b?(a(this).attr("aria-expanded","false"),a("#"+a(this).attr("aria-controls")).attr("hidden",!0)):(a(this).attr("aria-expanded","true"),a("#"+a(this).attr("aria-controls")).attr("hidden",!1))}),a(".site-health-view-passed").on("click",function(){var b=a("#health-check-issues-good");b.toggleClass("hidden"),a(this).attr("aria-expanded",!b.hasClass("hidden"))}),"undefined"!=typeof SiteHealth&&(0===SiteHealth.site_status.direct.length&&0===SiteHealth.site_status.async.length?c():SiteHealth.site_status.issues={good:0,recommended:0,critical:0},0k&&(k=0),100parseInt(SiteHealth.site_status.issues.critical,0)&&a("#health-check-issues-critical").addClass("hidden"),1>parseInt(SiteHealth.site_status.issues.recommended,0)&&a("#health-check-issues-recommended").addClass("hidden"),50<=k&&g.addClass("orange").removeClass("red"),90<=k&&g.addClass("green").removeClass("orange"),100===k&&(a(".site-status-all-clear").removeClass("hide"),a(".site-status-has-issues").addClass("hide")),f.text(k+"%"),void(i||(a.post(ajaxurl,{action:"health-check-site-status-result",_wpnonce:SiteHealth.nonce.site_status_result,counts:SiteHealth.site_status.issues}),wp.a11y.speak(SiteHealth.string.site_health_complete_screen_reader.replace("%s",k+"%")))))}function d(){var e=!0;1<=SiteHealth.site_status.async.length&&a.each(SiteHealth.site_status.async,function(){var c={action:"health-check-"+this.test.replace("_","-"),_wpnonce:SiteHealth.nonce.site_status};return!!this.completed||(e=!1,this.completed=!0,a.post(ajaxurl,c,function(a){b(a.data),d()}),!1)}),e&&c()}function e(){var b={action:"health-check-get-sizes",_wpnonce:SiteHealth.nonce.site_status_result},d=(new Date).getTime(),e=window.setTimeout(function(){wp.a11y.speak(SiteHealth.string.please_wait)},3e3);a.post({type:"POST",url:ajaxurl,data:b,dataType:"json"}).done(function(a){f(a.data||{})}).always(function(){var b=(new Date).getTime()-d;a(".health-check-wp-paths-sizes.spinner").css("visibility","hidden"),c(),b>3e3?(b=b>6e3?0:6500-b,window.setTimeout(function(){wp.a11y.speak(SiteHealth.string.site_health_complete)},b)):window.clearTimeout(e)})}function f(b){var c=a("button.button.copy-button"),d=c.attr("data-clipboard-text");a.each(b,function(a,b){var c=b.debug||b.size;"undefined"!=typeof c&&(d=d.replace(a+": not calculated",a+": "+c))}),c.attr("data-clipboard-text",d),a("#health-check-accordion-block-wp-paths-sizes").find("td[class]").each(function(c,d){var e=a(d),f=e.attr("class");b.hasOwnProperty(f)&&b[f].size&&e.text(b[f].size)})}var g,h=new ClipboardJS(".site-health-copy-buttons .copy-button"),i=a(".health-check-body.health-check-debug-tab").length;h.on("success",function(b){var c=a(b.trigger).closest("div");a(".success",c).addClass("visible"),wp.a11y.speak(SiteHealth.string.site_info_copied)}),a(".health-check-accordion").on("click",".health-check-accordion-trigger",function(){var b="true"===a(this).attr("aria-expanded");b?(a(this).attr("aria-expanded","false"),a("#"+a(this).attr("aria-controls")).attr("hidden",!0)):(a(this).attr("aria-expanded","true"),a("#"+a(this).attr("aria-controls")).attr("hidden",!1))}),a(".site-health-view-passed").on("click",function(){var b=a("#health-check-issues-good");b.toggleClass("hidden"),a(this).attr("aria-expanded",!b.hasClass("hidden"))}),"undefined"==typeof SiteHealth||i||(0===SiteHealth.site_status.direct.length&&0===SiteHealth.site_status.async.length?c():SiteHealth.site_status.issues={good:0,recommended:0,critical:0},0
-
+
$details ) {
if ( ! isset( $details['fields'] ) || empty( $details['fields'] ) ) {
continue;
}
+
?>
+
-
-
+ if ( isset( $details['show_count'] ) && $details['show_count'] ) {
+ printf( '(%d)', count( $details['fields'] ) );
+ }
+
+ ?>
+
+
+
array(
+ 'href' => true,
+ ),
+ 'strong' => true,
+ 'em' => true,
+ );
+
if ( isset( $details['description'] ) && ! empty( $details['description'] ) ) {
- printf(
- '
%s
',
- wp_kses(
- $details['description'],
- array(
- 'a' => array(
- 'href' => true,
- ),
- 'strong' => true,
- 'em' => true,
- )
- )
- );
+ printf( '
%s
', wp_kses( $details['description'], $kses_settings ) );
}
+
?>
$field ) {
if ( is_array( $field['value'] ) ) {
$values = '';
+
foreach ( $field['value'] as $name => $value ) {
- $values .= sprintf(
- '%s: %s ',
- esc_html( $name ),
- esc_html( $value )
- );
+ $values .= sprintf( '%s: %s ', esc_html( $name ), esc_html( $value ) );
}
+
$values .= ' ';
} else {
$values = esc_html( $field['value'] );
}
- printf(
- '%s %s ',
- esc_html( $field['label'] ),
- $values
- );
+ if ( in_array( $field_name, $sizes_fields, true ) ) {
+ printf( '%s %s ', esc_html( $field['label'] ), esc_attr( $field_name ), $values );
+ } else {
+ printf( '%s %s ', esc_html( $field['label'] ), $values );
+ }
}
+
?>
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 4b0557e2f8..c09f3fbafb 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
-$wp_version = '5.2-beta2-45175';
+$wp_version = '5.2-beta2-45176';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.