Здоровье Сайта (Site Health)

Click here to view original web page at wp-kama.ru

Эти маршруты позволяют получить данные о здоровье сайта. Добавлено в WP 5.6.

Возможные маршруты (конечные точки маршрутов описаны ниже):

Класс контроллера: WP_REST_Site_Health_Controller{}

Оглавление

Схема ресурса

Схема показывает все поля, которые существуют для объекта: поля объекта которые вернет запрос.

ПараметрКонтекстОписание
test
string readonly
anyНазвание запущенного теста.
label
string readonly
anyЯрлык описания теста.
status
string readonly
anyСостояние теста.
Одно из: good, recommended, critical
badge
object readonly
anyКатегория теста.
description
string readonly
anyБолее детальное описание действий теста и почему это важно для пользователя.
actions
string readonly
anyHTML-код с действием для направления пользователя туда, где они могут решить проблему.

Описание маршрута

Запрос GET к маршруту вернет полное описание вложенных маршрутов: эндпоинты их параметры, схему.

$ curl -i http://example.com/wp-json/wp-site-health/v1/
{
	"namespace": "wp-site-health/v1",
	"routes": {
		"/wp-site-health/v1": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": {
						"namespace": {
							"default": "wp-site-health/v1",
							"required": false
						},
						"context": {
							"default": "view",
							"required": false
						}
					}
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/background-updates": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/background-updates"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/loopback-requests": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/loopback-requests"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/https-status": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/https-status"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/dotorg-communication": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/dotorg-communication"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/authorization-header": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/authorization-header"
					}
				]
			}
		},
		"/wp-site-health/v1/directory-sizes": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/directory-sizes"
					}
				]
			}
		},
		"/wp-site-health/v1/tests/page-cache": {
			"namespace": "wp-site-health/v1",
			"methods": [
				"GET"
			],
			"endpoints": [
				{
					"methods": [
						"GET"
					],
					"args": []
				}
			],
			"_links": {
				"self": [
					{
						"href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/page-cache"
					}
				]
			}
		}
	},
	"_links": {
		"up": [
			{
				"href": "https://wptest.loc/wp-json/"
			}
		]
	}
}

Tests/background-updates

Проверяет возможность обновления в фоновом режиме и возвращает результат проверки.

Запрос OPTIONS к маршруту вернет полное описание этого маршрута: эндпоинты их параметры, схему.

$ curl -X OPTIONS -i https://example.com/wp-site-health/v1/tests/background-updates
{
    "namespace": "wp-site-health/v1",
    "methods": [
        "GET"
    ],
    "endpoints": [
        {
            "methods": [
                "GET"
            ],
            "args": []
        }
    ],
    "schema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "wp-site-health-test",
        "type": "object",
        "properties": {
            "test": {
                "type": "string",
                "description": "The name of the test being run.",
                "readonly": true
            },
            "label": {
                "type": "string",
                "description": "A label describing the test.",
                "readonly": true
            },
            "status": {
                "type": "string",
                "description": "The status of the test.",
                "enum": [
                    "good",
                    "recommended",
                    "critical"
                ],
                "readonly": true
            },
            "badge": {
                "type": "object",
                "description": "The category this test is grouped in.",
                "properties": {
                    "label": {
                        "type": "string",
                        "readonly": true
                    },
                    "color": {
                        "type": "string",
                        "enum": [
                            "blue",
                            "orange",
                            "red",
                            "green",
                            "purple",
                            "gray"
                        ],
                        "readonly": true
                    }
                },
                "readonly": true
            },
            "description": {
                "type": "string",
                "description": "A more descriptive explanation of what the test looks for, and why it is important for the user.",
                "readonly": true
            },
            "actions": {
                "type": "string",
                "description": "HTML containing an action to direct the user to where they can resolve the issue.",
                "readonly": true
            }
        }
    },
    "_links": {
        "self": [
            {
                "href": "https://wptest.loc/wp-json/wp-site-health/v1/tests/background-updates"
            }
        ]
    }
}

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/background-updates

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/background-updates
{
	"label": "Background updates may not be working properly",
	"status": "recommended",
	"badge": {
		"label": "Security",
		"color": "blue"
	},
	"description": "<p>Background updates ensure that WordPress can auto-update if a security update is released for the version you are currently using.</p><ul><li><span class=\"dashicons warning\"><span class=\"screen-reader-text\">Warning</span></span> The folder <code>/var/app/wptest.loc/www/WordPress/</code> was detected as being under version control (<code>.git</code>).</li><li><span class=\"dashicons pass\"><span class=\"screen-reader-text\">Passed</span></span> Your installation of WordPress does not require FTP credentials to perform updates.</li><li><span class=\"dashicons pass\"><span class=\"screen-reader-text\">Passed</span></span> All of your WordPress files are writable.</li></ul>",
	"actions": "",
	"test": "background_updates"
}

Tests/loopback-requests

Проверяет может ли сайт делать запросы сам на себя и возвращает результат проверки.

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/loopback-requests

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/loopback-requests
{
	"label": "Ваш сайт может выполнять петлевые запросы",
	"status": "good",
	"badge": {
		"label": "Производительность",
		"color": "blue"
	},
	"description": "<p>Петлевые запросы используются для запуска запланированных заданий, а также используются встроенным редактором кода плагинов и тем для проверки корректности кода.</p>",
	"actions": "",
	"test": "loopback_requests"
}

Tests/https-status

Проверят используется ли протокол безопасности SSL (HTTPS).

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/https-status

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/https-status
{
	"label": "Ваш сайт не использует HTTPS",
	"status": "recommended",
	"badge": {
		"label": "Безопасность",
		"color": "blue"
	},
	"description": "<p>Вы зашли на сайт по HTTPS, но <a href=\"https://wptest.loc/WordPress/wp-admin/options-general.php#siteurl\">адрес WordPress</a> и <a href=\"https://wptest.loc/WordPress/wp-admin/options-general.php#home\">адрес сайта</a> не установлены для использования HTTPS по умолчанию.</p><p>Обратитесь в техническую поддержку хостинга для обеспечения поддержки HTTPS на вашем сайте.</p>",
	"actions": "<p><a href=\"https://developer.wordpress.org/advanced-administration/security/https/\" target=\"_blank\" rel=\"noopener\">Узнайте больше, почему вам следует использовать HTTPS<span class=\"screen-reader-text\"> (откроется в новой вкладке)</span><span aria-hidden=\"true\" class=\"dashicons dashicons-external\"></span></a></p>",
	"test": "https_status"
}

Tests/dotorg-communication

Проверяет может ли ваш сайт делать запросы на сайт WordPress.org. Подключение к серверам WordPress.org используется для проверки новых версий, установки и обновлений WordPress, плагинов и тем.

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/dotorg-communication

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/dotorg-communication
{
	"label": "WordPress.org доступен",
	"status": "good",
	"badge": {
		"label": "Безопасность",
		"color": "blue"
	},
	"description": "<p>Подключение к серверам WordPress.org используется для проверки новых версий, установки и обновлений WordPress, плагинов и тем.</p>",
	"actions": "",
	"test": "dotorg_communication"
}

Tests/authorization-header

Проверяет HTTP заголовок авторизации на корректность. См. WP_Site_Health::get_test_authorization_header(). См. https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/authorization-header

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/authorization-header
{
	"label": "Неверный заголовок авторизации",
	"status": "recommended",
	"badge": {
		"label": "Безопасность",
		"color": "blue"
	},
	"description": "<p>Заголовок авторизации предоставляется разрешёнными приложениями третьей стороны. Без этого заголовка такие приложения не смогут подключиться к вашему сайту.</p><p>Если вы все еще видите это предупреждение после того, как предприняли описанные ниже действия, возможно, вам придется обратиться в поддержку хостинга за дополнительной помощью.</p>",
	"actions": "<p><a href=\"https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working\" target=\"_blank\" rel=\"noopener\">Узнайте о том, как настроить заголовок авторизации.<span class=\"screen-reader-text\"> (откроется в новой вкладке)</span><span aria-hidden=\"true\" class=\"dashicons dashicons-external\"></span></a></p>",
	"test": "authorization_header"
}

Directory-sizes

Получает информацию о размере папок сайта.

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/directory-sizes

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/directory-sizes
{
	"raw": 0,
	"wordpress_size": {
		"size": "54,65 МБ",
		"debug": "54,65 МБ (57305511 bytes)",
		"raw": 57305511
	},
	"themes_size": {
		"size": "3,30 МБ",
		"debug": "3,30 МБ (3460331 bytes)",
		"raw": 3460331
	},
	"plugins_size": {
		"size": "158,26 МБ",
		"debug": "158,26 МБ (165947579 bytes)",
		"raw": 165947579
	},
	"uploads_size": {
		"size": "210,93 МБ",
		"debug": "210,93 МБ (221175270 bytes)",
		"raw": 221175270
	},
	"database_size": {
		"size": "1,01 ГБ",
		"debug": "1,01 ГБ (1088950272 bytes)",
		"raw": 1088950272
	},
	"total_size": {
		"size": "1,43 ГБ",
		"debug": "1,43 ГБ (1536838963 bytes)",
		"raw": 1536838963
	}
}

Или:

{
	"code": "not_available",
	"message": "Нельзя отобразить размеры папок.",
	"data": {
		"status": 500
	}
}

Tests/page-cache

Проверяет включено ли для сайта кэширование страниц.

Вид запроса

Доступ: приватный (cap: view_site_health_checks)

GET /wp-site-health/v1/tests/page-cache

Параметры запроса

Нет параметров.

Пример запроса

$ curl http://example.com/wp-json/wp-site-health/v1/tests/page-cache
{
	"badge": {
		"label": "Производительность",
		"color": "blue"
	},
	"description": "<p>Кеш страниц повышает скорость и производительность сайта за счет сохранения и отдачи статических страниц вместо создания страницы каждый раз, когда её посещают.</p><p>Кеширование страниц обнаруживается поиском активного плагина кеша страниц, а также выполнением трех запросов к главной странице и поиском одного или нескольких из следующих заголовков кеширования для HTTP-клиента:</p><code>cache-control</code>, <code>expires</code>, <code>age</code>, <code>last-modified</code>, <code>etag</code>, <code>x-cache-enabled</code>, <code>x-cache-disabled</code>, <code>x-srcache-store-status</code>, <code>x-srcache-fetch-status.</code><ul><li><span class=\"dashicons dashicons-yes-alt\"></span> Среднее время ответа сервера составило 174 мс. Это меньше рекомендуемого порога в 600 мс.</li><li><span class=\"dashicons dashicons-warning\"></span> В заголовках ответа не найдены заголовки кеширования на стороне клиента.</li><li><span class=\"dashicons dashicons-warning\"></span> Плагин кеширования страниц не обнаружен.</li></ul>",
	"test": "page_cache",
	"status": "recommended",
	"label": "Кеширование страниц не обнаружено, но время отклика сервера хорошее",
	"actions": "<p><a href=\"https://developer.wordpress.org/advanced-administration/performance/optimization/#caching\" target=\"_blank\" rel=\"noopener noreferrer\">Узнайте больше о кешировании страниц<span class=\"screen-reader-text\"> (откроется в новой вкладке)</span><span aria-hidden=\"true\" class=\"dashicons dashicons-external\"></span></a></p>"
}