TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

400
Содержание

WordPress 5.6 – это следующий крупный выпуск WordPress, который скоро будет доступен. Сегодня мы рады познакомить вас с наиболее интересными функциями и дополнениями, объединенными в Core.

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

Однако не все связано с редактором блоков. В WordPress Core было добавлено несколько функций, таких как новая тема Twenty Twenty-One по умолчанию, автоматические обновления для основных выпусков, улучшенная поддержка PHP 8.0, пароли приложений для аутентификации REST API.

В WordPress 5.6 есть гораздо больше. Мы увидим улучшения доступности, улучшения пользовательского интерфейса, множество исправлений ошибок и огромный список изменений для разработчиков.

Если вы хотите узнать больше о цикле разработки WordPress 5.6, перейдите по ссылкам ниже:

  • 20 октября 2020 г .: бета 1
  • 27 октября 2020 г .: бета 2
  • 2 ноября 2020 г .: бета 3
  • 12 ноября 2020 г .: бета 4
  • 17 ноября 2020 г .: RC 1
  • 1 декабря 2020 г .: RC 2
  • 7 декабря 2020 г .: пробный запуск выпуска WordPress 5.6
  • 8 декабря 2020 г .: намеченная дата выпуска WordPress 5.6.

Готовы погрузиться? Пройдем:

Что нового в редакторе блоков

В WordPress 5.6 несколько версий плагина Gutenberg были объединены в ядро, поэтому пользователи и авторы WordPress должны заметить несколько улучшений в редакторе. Мы увидим улучшенные шаблоны блоков, количество слов на информационной панели, улучшенную навигацию с клавиатуры, улучшенный интерфейс перетаскивания и многое другое.

Более полный список всех улучшений и изменений, добавленных в редактор блоков, можно найти в сообщениях с объявлениями о выпуске: 8.6, 8.7, 8.8, 8.9, 9.0, 9.1 и 9.2. Исправления ошибок и улучшения производительности, реализованные в Gutenberg 9.3 и 9.4, также включены в WordPress 5.6.

Давайте погрузимся в более интересные изменения, которые мы увидим в редакторе блоков.

  1. Блоки, шаблоны и улучшения пользовательского интерфейса
  2. Блокировать API V2
  3. Дополнительные функции и улучшения для разработчиков блоков

Блоки, шаблоны и улучшения пользовательского интерфейса

Новые функции блоков, улучшения и исправления ошибок улучшат общий опыт редактирования. Также была проделана большая работа по доступности. Ниже вы найдете нашу тщательно подобранную подборку наиболее интересных функций, которые вы увидите в редакторе блоков после обновления своего сайта до WordPress 5.6.

Элементы управления положением для видео в блоке обложки

Добавленные в Cover Blocks, начиная с Gutenberg 8.6, элементы управления положением для видео позволяют пользователям перемещать фокус и устанавливать пользовательское положение для видео. Ранее эта функция была доступна только для фоновых изображений.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Элементы управления положением видео для блока обложки

Значения положения устанавливаются щелчком в любом месте средства выбора точки фокусировки и / или с помощью клавиш со стрелками на клавиатуре. Вы можете перейти на 10 значений, удерживая shift (см. Также №22531 ).

Обновления шаблонов блокировки

WordPress 5.6 также включает несколько улучшений шаблонов блоков, добавленных в Gutenberg 8.6.

Макет, текст и цвет большого заголовка и абзаца были обновлены (№ 23858 ).

Заголовок в двух столбцах текста был перемещен из текстового блока и помещен над столбцами (# 23853 )

Цитата модель теперь включает в себя изображение сверху и сепаратор в нижней части.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Новый шаблон цитаты включает изображение и разделитель.

Новый шаблон заголовка и абзаца был добавлен в Gutenberg 8.7 (# 24143 ).

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Шаблон заголовка и абзаца в WordPress 5.6

Хорошим улучшением удобства использования для вставки блоков является раскрывающийся список категорий шаблонов блоков, который позволяет фильтровать шаблоны по категориям. Это чрезвычайно полезно, когда у вас есть выбор из множества паттернов (# 24954 ).

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Раскрывающийся список категорий шаблонов блоков

Поддержка видео субтитров

Видеоблоки теперь поддерживают видео-субтитры.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Добавление субтитров к видео в видеоблоке

Редакторы и создатели контента должны предоставлять субтитры к видео в формате WebVTT (формат текстовых треков веб-видео), который является «форматом для отображения синхронизированных текстовых треков (таких как субтитры или подписи) с использованием <track>элемента» (№ 25861 ).

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Отслеживайте элементы, ссылающиеся на субтитры на разных языках

После того, как вы загрузите файлы .vtt, посетители сайта смогут включить субтитры на их любимом языке.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Пользовательские настройки субтитров видео

Преобразование нескольких блоков в блок столбцов

Интересным улучшением удобства использования является возможность конвертировать несколько выбранных блоков в блок столбцов.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Выбрать несколько блоков

Вам просто нужно выбрать блоки, которые вы хотите отобразить в столбцах, затем нажать верхнюю правую кнопку панели инструментов блока.

Каждый выбранный блок будет преобразован в столбец блока столбцов.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Три блока преобразованы в три столбца

Фоновые узоры в блоке обложки

Блоки обложек теперь могут отображать фоновые рисунки.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Блок обложки с фоновым рисунком

Чтобы добавить фоновый узор, загрузите изображение узора, затем включите опцию «Повторяющийся фон» (вот все, что вам нужно знать о медиа-библиотеке в WordPress ).

Когда закончите, настройте средство выбора точки фокусировки в соответствии с вашими потребностями и попробуйте различные комбинации с фиксированным фоном.

В блок мультимедиа и текста добавлен контроль размера изображения

В Gutenberg 9.1 новый элемент управления размером изображения был добавлен к изображениям в блоке мультимедиа и текста.

Теперь пользователи могут выбирать из всех доступных размеров изображения (# 24795 ).

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Управление размером изображения в блоке мультимедиа и текста

Блокировать API V2

Новая версия Block API позволяет блокам отображать свой элемент оболочки. Цель новой версии API – облегчить DOM редактора и привести его в соответствие с содержимым главной страницы. По словам Эллы ван Дурп:

Самым большим преимуществом этого является то, что темы и плагины могут более легко стилизовать содержимое блока, если разметка в редакторе такая же.

В новой версии требуется объявить apiVersionсвойство при регистрации типа блока:

registerBlockType( name, { apiVersion: 2 } );

Новый API также требует useBlockProps ловушки в Editфункции блока. Этот хук помечает элемент оболочки блока как элемент блока.

Любое свойство, переданное этому хуку, будет объединено и возвращено элементу-оболочке. В следующем примере из заметок разработчика показан простой вариант использования:

import { useBlockProps } from '@wordpress/block-editor'; function Edit( { attributes }) { const blockProps = useBlockProps( { className: someClassName, style: { color: 'blue' }, } ); return <p { ...blockProps }>{ attributes.content }</p>; }

Дополнительные примеры см. В разделе Block API версии 2.

Дополнительные функции и улучшения для разработчиков блоков

Помимо Block API Version 2, вот список дополнений, через которые разработчики должны пройти.

Блок поддерживает API

Block Supports API позволяет разработчикам блоков добавлять функции в свои блоки. Цвета, фон, размеры шрифтов – это лишь некоторые из множества функций, которые можно добавить в блоки через API поддержки блоков.

WordPress 5.6 также представляет несколько новых поддерживающих блоков, «чтобы повысить согласованность и упростить введение этих параметров в блоки».

Разработчики могут использовать поддержку нового блока, добавляя соответствующие ключи в supportsсвойство файла block.json или непосредственно в registerBlockType функцию.

В следующем примере из примечания разработчика Block Supports показано, как это работает:

supports: { color: { background: true, gradient: true, text: true }, fontSize: true, lineHeight: true }

Значение стиля будет автоматически прикреплено к элементу оболочки либо через has-<value>-<preset-category>класс (для предустановленных значений), либо с styleэлементом (для настраиваемых значений).

По этой причине поддержки блоков предназначены для использования с новым API блоков V2.

Опоры блоков также можно использовать с динамическими блоками.

createBlocksFromInnerBlocksTemplate API

Разработчики могут использовать компонент InnerBlocks для создания пользовательских блоков, содержащих другие блоки. Примерами являются блок Columns и блок Social Links.

Новый createBlocksFromInnerBlocksTemplateBlock API позволяет создавать блоки из шаблона InnerBlocks.

См. Примечания разработчика для более подробного представления и примера кода.

Компоненты панели инструментов

Несколько изменений коснулись и компонентов панели инструментов :

1. Компонент ToolbarGroup

До WordPress 5.6 компонент панели инструментов позволял разработчикам группировать связанные параметры в общий контейнер. Теперь вместо этого следует использовать новый компонент ToolbarGroup.

<BlockControls> <ToolbarGroup> <ToolbarButton /> </ToolbarGroup> </BlockControls>
2. Компоненты ToolbarButton и ToolbarItem

Использование элементов с вкладками напрямую в качестве элементов панели инструментов (т.е. <button>) устарело. С целью улучшения доступности элементы панели инструментов могут быть добавлены с помощью ToolbarButton для кнопок и ToolbarItem для других элементов управления. В приведенном ниже примере показаны кнопка и раскрывающееся меню :

<BlockControls> <ToolbarItem as="button" /> <ToolbarButton /> <ToolbarItem> { (itemProps) => (<DropdownMenu toggleProps={ itemProps } />) } </ToolbarItem> </BlockControls>

Отключение шаблонов основных блоков

Основные шаблоны теперь можно отключить с помощью core-block-patternsфлага поддержки (# 24042 ).

Отключение встроенного редактора изображений

В Gutenberg 8.4 добавлена функция встроенного редактирования изображений, позволяющая пользователям редактировать изображения прямо из редактора блоков.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Встроенное редактирование изображений

Теперь разработчики могут отключить редактор изображений с помощью block_editor_settingsфильтра (# 23966 ):

add_filter( 'block_editor_settings', function( $settings) { $settings['imageEditing'] = false; return $settings; } );

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Встроенное редактирование изображений отключено

Многоразовые блоки перемещены в отдельный пакет

Повторно используемые блоки, ранее входившие в состав @wordpress/editorпакета, были перемещены в @wordpress/reusable-blocksпакет, чтобы сделать их доступными в других редакторах.

Новая тема по умолчанию: Twenty Twenty-One

WordPress 5.6 включает новую тему по умолчанию. Twenty Twenty-One – это легкодоступная минималистичная тема WordPress с одностолбцовой компоновкой и боковой панелью нижнего колонтитула.

В новой теме используется системный стек шрифтов и минимальная цветовая палитра, основанная на пастельных цветах фона.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Предварительный просмотр темы Twenty Twenty-One (Источник изображения: Make WordPress Core)

Вы можете узнать больше о Twenty Twenty-One в нашем подробном сообщении в блоге: Twenty Twenty-One: Глубокое погружение в новую тему WordPress по умолчанию.

Автообновления для основных выпусков

Автоматические обновления – это основная функция, представленная в WordPress 3.7, направленная на повышение безопасности сайта и упрощение для администраторов сайтов поддержания их веб-сайтов WordPress в актуальном состоянии.

В то время как автоматические второстепенные обновления ядра были реализованы в более ранних версиях, администраторы сайтов WordPress 5.6 теперь могут вручную включать автоматические обновления и для основных выпусков (подробнее об этом через секунду).

К сожалению, эта критически важная задача обслуживания может немного сбивать с толку нетехнических пользователей. Вы можете узнать больше о том, как работают автоматические обновления, в нашей записи блога Deep Dive Into WordPress Automatic Updates.

Итак, WordPress 5.6 представляет новый интерфейс, который позволяет администраторам сайтов включать автоматические обновления для основных основных выпусков.

Объем этой функции изменился во время цикла бета-тестирования WordPress 5.6, и исходное примечание разработчика было заменено. По словам Дж. Б. Одраса ,

Первоначальный объем автообновлений Core переместился в:

  • Предоставьте некоторые обновления дизайна пользовательского интерфейса.
  • Для существующих установок поведение останется таким же, как и сегодня: по умолчанию включены незначительные обновления, но пользователь должен отказаться от основных обновлений (константы и фильтры, которые уже используются хостами или агентствами, по-прежнему будут принимать приоритет).
  • Для новых установок поведение по умолчанию изменится: по умолчанию включены незначительные обновления, а по умолчанию – крупные.

Начиная с WordPress 5.6, вы можете включить автоматические обновления для основных версий ядра на экране «Обновления», где в новом пользовательском интерфейсе есть флажок, позволяющий включить автоматические обновления для всех новых версий WordPress.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Включите автоматические обновления для всех новых версий WordPress

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

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

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

Основные автоматические обновления ядра для разработчиков

Во-первых, когда включены основные автоматические обновления ядра, auto_update_core_majorпараметр сохраняется в базе данных с option_valueвключенным. Итак, если get_site_option( 'auto_update_core_major' )возвращается true, флажок автоматических обновлений установлен.

Затем WordPress проверяет, включены ли основные автоматические обновления ядра с помощью WP_AUTO_UPDATE_COREконстанты или allow_major_auto_core_updatesфильтра, и устанавливает соответствующий флажок.

Разработчики также могут отключить основные автоматические обновления ядра, установив для WP_AUTO_UPDATE_COREконстанты значение falseили, minorкак показано ниже (см. Также Управление фоновыми обновлениями через wp-config.php ):

define( 'WP_AUTO_UPDATE_CORE', false ); define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Обратите внимание, что возможные значения WP_AUTO_UPDATE_COREявляются true(все), 'beta', 'rc', 'minor', false.

Другой вариант отключения основных автоматических обновлений ядра по умолчанию – использование нового allow_major_auto_core_updatesфильтра:

add_filter( 'allow_major_auto_core_updates', '_return_false' );

Несколько комментариев по поводу добавления автообновлений в ядро

Еще в декабре 2018 года Мэтт Малленвег поделился девятью приоритетами на 2019 год, где «Предоставление пользователям возможности подписаться на автоматические обновления основных выпусков Core» было номером 7. Может быть, немного поздно, но мы приближаемся к цели.

Основные автоматические обновления ядра должны иметь большое влияние на безопасность и удобство работы WordPress. Одно кажется ясным: с технической точки зрения функция основных автоматических обновлений ядра – это сложная задача, которая не решена на 100% с выпуском WordPress 5.6.

После вдумчивого обсуждения Slack Джозефа Хейден резюмировала проблемы и вопросы, поступающие от основных участников.

Основная долгосрочная цель – сделать так, чтобы на большинстве веб-сайтов WordPress были доступны автоматические обновления, чтобы повысить безопасность всей экосистемы WordPress (более 30% Интернета ).

В любом случае, по словам Хелен Хоу-Санди, ведущего разработчика ядра:

На мой взгляд, есть несколько очень сложных технических вещей, которые нужно выполнить, и это требует ОЧЕНЬ дисциплинированного и целенаправленного владения техническим продуктом.

Таким образом, со временем мы должны увидеть дополнительные изменения и улучшения в пользовательском интерфейсе основных автоматических обновлений ядра. Вот чего мы можем ожидать отныне:

WordPress 5.6:

  • В существующих установках основные обновления должны быть включены пользователем. Любые уже используемые константа и фильтр будут иметь приоритет. Незначительные обновления включены по умолчанию.
  • В новых установках по умолчанию включены как незначительные, так и основные обновления.

WordPress 5.6.1:

  • Мы должны увидеть некоторые изменения в основном интерфейсе автоматического обновления на основе отзывов.

WordPress 5.7:

  • Для всех, кто отказался от основных автоматических обновлений, на экран «Состояние сайта» следует добавить подталкивание.
  • В процесс установки WordPress 5.7 следует добавить подписку на автоматическое обновление.

Большой проблемой при автоматическом обновлении ядра является доверие пользователей. По словам Хелен:

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

Однако каждый веб-сайт WordPress представляет собой смесь ядра, плагинов и тем. По словам Хелен:

Основные обновления в целом довольно безопасны, и есть некоторые встроенные средства защиты, но поскольку сайты могут запускать любой код из любого источника, не существует такого понятия, как «100%» для «всех типов веб-сайтов WordPress».

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

Основные автоматические обновления также повлияют на общий процесс обновления, включая автоматические обновления плагинов и тем. Йост де Валк отметил в комментарии:

Если мы включим автоматические обновления ядра WordPress по умолчанию, мы должны сделать то же самое для плагинов. В противном случае плагины и темы не смогут обновлять то, что им нужно исправить, из-за основных обновлений. Я думаю, пользователи тоже этого ожидают: если WordPress автоматически обновляется, плагины и темы тоже должны обновляться автоматически.

Изменения работоспособности сайта в WordPress 5.6

Наряду со всеми обсуждаемыми здесь функциями WordPress 5.6 также предлагает улучшенную версию инструмента Site Health, который теперь ведет себя иначе в фоновом режиме.

Проверка данных проверки работоспособности сайта

Валидатор теперь проверяет ответы на вопросы для тестов работоспособности сайта. Валидатор отменит любой недопустимый ответ, предотвратив появление фатальных ошибок с помощью инструмента « Работоспособность сайта» и остановив дальнейшие действия.

С этого момента неверные ответы не будут влиять на индикатор работоспособности сайта (# 50145 ).

Асинхронные проверки через конечную точку REST

Инструмент Site Health – мощный инструмент безопасности, который позволяет владельцам сайтов знать о состоянии своих сайтов.

Этот инструмент выполняет ряд тестов безопасности, обеспечивая обзор состояния вашего веб-сайта.

Эти тесты делятся на две категории: прямые тесты, выполняемые при загрузке страницы, и асинхронные тесты, для выполнения которых может потребоваться некоторое время и которые будут выполняться позже с помощью вызовов JavaScript.

Раньше эти тесты выполнялись с вызовом admin-ajax.php. В WordPress 5.6 все отходит от admin-ajax.php, и вместо него будет использоваться новая конечная точка REST API. Начиная с WordPress 5.6, асинхронные тесты можно найти в /wp-json/wp-site-health/v1пространстве имен.

Благодаря новому усовершенствованию REST API плагины и темы также могут использовать конечные точки REST и не ограничиваются действиями Ajax для своих тестов работоспособности.

Теперь каждый асинхронный тест может объявлять has_restаргумент, который по умолчанию равен false.

В приведенном ниже коде из wp-admin / includes / class-wp-site-health.php показан массив асинхронных тестов в WordPress 5.6:

'async' => array( 'dotorg_communication' => array( 'label' => __( 'Communication with WordPress.org' ), 'test' => rest_url( 'wp-site-health/v1/tests/dotorg-communication' ), 'has_rest' => true, 'async_direct_test' => array( WP_Site_Health::get_instance(), 'get_test_dotorg_communication' ), ), 'background_updates' => array( 'label' => __( 'Background updates' ), 'test' => rest_url( 'wp-site-health/v1/tests/background-updates' ), 'has_rest' => true, 'async_direct_test' => array( WP_Site_Health::get_instance(), 'get_test_background_updates' ), ), 'loopback_requests' => array( 'label' => __( 'Loopback request' ), 'test' => rest_url( 'wp-site-health/v1/tests/loopback-requests' ), 'has_rest' => true, 'async_direct_test' => array( WP_Site_Health::get_instance(), 'get_test_loopback_requests' ), ), 'authorization_header' => array( 'label' => __( 'Authorization header' ), 'test' => rest_url( 'wp-site-health/v1/tests/authorization-header' ), 'has_rest' => true, 'headers' => array( 'Authorization' => 'Basic '. base64_encode( 'user:pwd') ), 'skip_cron' => true, ), ),

Запланированные проверки работоспособности сайта :

Хотя асинхронные тесты были реализованы для предотвращения медленной загрузки страниц и тайм-аутов, такой проблемы не существует с запланированными тестами.

Имея это в виду, в дополнение к has_restаргументу, который мы упомянули выше, тестовые массивы также могут объявлять async_direct_testаргумент (используя приведенный выше код), который должен быть вызываемым экземпляром теста.

Если тест запускается во время запланированного события, тест не будет использовать конечную точку REST API, а будет выполняться напрямую.

Пароли приложений для аутентификации REST API

Пароли приложений – это новая система для выполнения аутентифицированных запросов к различным API WordPress.

Пароли имеют длину 24 символа и состоят из прописных, строчных и числовых символов, которые могут быть сгенерированы вручную или через REST API.

Чтобы вручную сгенерировать новый пароль приложения, перейдите на экран своего профиля и прокрутите страницу вниз.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Пароли приложений на экране профиля пользователя

Выберите имя для вашего пароля приложения и подтвердите. WordPress отобразит ваш новый пароль.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Новый пароль приложения

Пароли приложений отображаются в виде блоков по 4 символа, разделенных пробелами, как показано ниже:

gsUc UhkU 0ScI gdRd TGoU vrW5

Однако пароли можно использовать с пробелами или без них :

Пароли приложений, возвращаемые через поток авторизации, не содержат пробелов. Они предназначены исключительно для того, чтобы кому-то, смотрящему на длинную строку, было легче удержаться на своем месте, если ввести ее вручную.

Их можно использовать по частям, без пробелов или – черт возьми – если хотите, вы, вероятно, можете добавить пробел после каждого символа.

На экране профиля пользователя вы можете просматривать, создавать и отзывать пароли приложений. Столбцы «Последний использованный» и «Последний IP-адрес» позволяют легко узнать пароли, которые больше не используются, которые следует отозвать.

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Поля “Последний использованный” и “Последний IP-адрес”

На момент написания этой статьи пароли приложений можно было использовать с запросами с аутентификацией REST API и с устаревшим API XML-RPC. Однако в будущем мы должны увидеть, что пароли приложений будут использоваться с дополнительными API. Джордж Стефанис объясняет:

Схема аутентификации паролей приложений также может быть применена к будущим API для WordPress по мере их появления. Например, если в WordPress включен GraphQL или другие системы, пароли приложений предоставят им надежную, устоявшуюся инфраструктуру аутентификации, которую можно создать «из коробки».

Что нового в WordPress 5.6 (доступность, производительность, безопасность)

Аутентифицированный вызов REST API в Postman

Использование паролей приложений на wp-login.php невозможно.

Чтобы получить более подробное представление об этой функции и получить дополнительную техническую информацию, обязательно ознакомьтесь со следующими ресурсами:

Лучшая поддержка PHP 8

PHP 8.0 содержит множество новых функций и оптимизаций, что делает его настоящей вехой в развитии языка. В новой версии PHP появилось множество обновлений, нарушающих обратную совместимость, и многие устаревшие функции теперь официально удалены. Так что добавить поддержку PHP 8 в WordPress – большая проблема.

Фактически, даже если участники WordPress Core приложат огромные усилия для обеспечения совместимости WordPress 5.6 с PHP 8, мы не должны ожидать, что будут обнаружены все возможные проблемы. Цель здесь – достичь момента, когда вся экосистема WordPress будет совместима с PHP 8, что в настоящий момент кажется действительно крепким орешком.

Кроме того, веб-сайт WordPress включает как минимум одну тему и переменное количество плагинов. Итак, мы можем ожидать хорошей поддержки PHP 8 в WordPress Core, но трудно поверить, что плагины и темы быстро добавят поддержку PHP 8.

Мы согласны с Джонатаном Дерозье, когда он заявляет:

Состояние поддержки PHP 8 в более широкой экосистеме (плагины, темы и т.д.) Узнать невозможно. По этой причине WordPress 5.6 следует считать «бета-совместимой» с PHP 8.

«Бета-совместимая с PHP 8» кажется хорошим выражением для представления непрерывного процесса, который по-прежнему требует больших усилий, но в то же время свидетельствует о большой проделанной работе.

Однако,

Всем разработчикам плагинов и тем, а также сообществам хостинга предлагается сделать свой код совместимым с PHP 8. Это позволит WordPress быстрее достичь действительно «полной совместимости», и конечным пользователям не придется нести бремя.

Хотя большинство несовместимостей, выявленных с помощью автоматических тестов, было исправлено, некоторые ручные тесты все еще необходимы. По этой причине настоятельно рекомендуется провести тщательные тесты совместимости в промежуточной или локальной среде перед обновлением вашего действующего веб-сайта до PHP 8.

Некоторые изменения PHP 8, о которых следует знать

Как мы упоминали выше, полная совместимость WordPress с PHP 8 находится в стадии разработки. Джонатан Десрозье предоставляет список функций PHP 8 и изменений, о которых следует знать разработчикам WordPress.

Именованные параметры

С помощью именованных аргументов PHP теперь можно передавать аргументы функции на основе имени параметра, а не позиции параметра. Это позволяет писать самодокументированный код, аргументы не зависят от порядка, а значения по умолчанию можно произвольно пропускать.

К сожалению, указанные в настоящее время параметры могут вызвать проблемы с обратной совместимостью в WordPress. Основная причина в том, что имена параметров могут быть изменены без предварительного уведомления до завершения текущего аудита. Итак, на момент написания:

Использование именованных параметров при вызове функций и методов класса WordPress явно не поддерживается и настоятельно не рекомендуется, пока этот аудит не будет завершен, так как во время аудита имена параметров могут быть изменены без предварительного уведомления. Когда этот аудит будет завершен, об этом будет объявлено в будущей заметке разработчика.

Строгие проверки типов / значений для внутренних функций

При передаче параметра недопустимого типа внутренние и пользовательские функции ведут себя по-разному. Пользовательские функции генерируют a TypeError, но внутренние функции ведут себя по-разному, в зависимости от нескольких условий.

Чтобы устранить эти несоответствия, в PHP 8 внутренние API синтаксического анализа параметров всегда генерируют a ThrowErrorв случае несоответствия типа параметра.

Объявление строгого типа не используется в WordPress Core. Однако участники Core работают над предотвращением передачи недопустимых типов в функции Core. Пока эта работа не будет завершена, это изменение PHP 8 может привести к TypeErrors, «особенно если тип значения неправильно изменен посредством кода, привязанного к фильтру».

Более строгие проверки типов для арифметических и побитовых операторов

В предыдущих версиях PHP использование арифметических и побитовых операторов для массива, ресурса или неперегруженного объекта было разрешено, но поведение было непоследовательным и даже иногда необоснованным:

var_dump([] % [42]);

В PHP 8 поведение всегда одно и то же, и все арифметические и побитовые операторы вызовут TypeErrorисключение, если операнд является массивом, ресурсом или неперегруженным объектом (см. RFC ).

Это еще одно изменение, которое требует от основных участников дополнительной работы, такой как исправление множества ошибок, предупреждений и заметок.

Опять же, из-за того, что несколько проблем все еще не решены, настоятельно рекомендуется запустить тесты совместимости в промежуточной среде или среде разработки, прежде чем вы переключитесь на PHP 8 на своем действующем веб-сайте. Узнайте больше о WordPress и PHP 8.0.

Дополнительные изменения для разработчиков

WordPress 5.6 вносит множество изменений для разработчиков, и мы не могли включить все в наш список. Но вот топ-3, на которые, на наш взгляд, стоит обратить внимание:

1. Перехватчик действий wp_after_insert_post

До WordPress 5.6 вы могли использовать save_postsили аналогичные действия для запуска собственного кода после публикации сообщения. Теперь WordPress 5.6 представляет новый wp_after_insert_postперехватчик действий, который срабатывает только после сохранения терминов и метаданных.

Кроме того, были обновлены несколько функций, чтобы предотвратить срабатывание этих хуков. В функции, и $fire_after_hooksдобавлен новый параметр. Если установлено, это предотвращает срабатывание крючков после вставки.wp_insert_posts()``wp_update_post()``wp_insert_attachment()``false

Ознакомьтесь с примечанием разработчика для более глубокого обзора.

2. Приведение типов

Типажи функции intval(), strval(), floatval()и boolval()были удалены из Ядра в пользу прямых типажей:

  1. intval()(int)
  2. strval()(string)
  3. floatval()(float)

Это изменение оказывает прямое воздействие на производительности, как прямой типажей является ~ 6м быстрее, чем типажи функции.

3. Объекты WP_Error

WP_ErrorКласс был расширен, чтобы позволить объединение нескольких WP_Errorэкземпляров в одно целое. Раньше это можно было делать только вручную. Теперь в WordPress 5.6 представлены три новых метода для обработки нескольких WP_Errorэкземпляров. Код ниже – это пример из примечания разработчика :

<?php $error_1 = new WP_Error( 'code1', 'This is my first error message.', 'Error_Data' ); $error_2 = new WP_Error( 'code2', 'This is my second error message.', 'Error_Data2' ); $error_1->merge_from( $error_2 ); $error_1->get_all_error_data( 'code2' ); $error_1->export_to( $error_2 );

Дополнительная литература для разработчиков

Невозможно перечислить все изменения, направленные на разработку, внесенные WordPress 5.6, но вы можете узнать о них больше, используя следующие ресурсы:

Резюме

WordPress 5.6 – это крупный выпуск с множеством функций и изменений для пользователей и разработчиков. Мы всегда рады видеть, как развитие веб-технологий напрямую влияет на безопасность, производительность, удобство использования и доступность WordPress .

Но эволюция никогда не останавливается, и мы уже можем заглянуть в будущие потенциальные даты выпуска.

Решайте сами: что вам больше всего нравится в WordPress 5.6? А какие функции вы бы хотели добавить в WordPress 5.7?


Если вам понравилась эта статья, то вам понравится хостинговая платформа Kinsta WordPress. Ускорьте свой сайт и получите круглосуточную поддержку от нашей опытной команды WordPress. Наша инфраструктура на базе Google Cloud ориентирована на автоматическое масштабирование, производительность и безопасность. Позвольте нам показать вам разницу Kinsta! Ознакомьтесь с нашими планами

Источник записи: https://kinsta.com

Leave A Reply

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. ПринимаюПодробнее