Как включить Gutenberg для пользовательских типов записей WordPress

Статьи 22.09.2022 (обновлено)

На протяжении многих лет сообщество WordPress использовало пользовательские типы записей (CPT — Custom Post Types) для расширения функциональности стандартной платформы WordPress. Учитывая популярность, эта функция стала неотъемлемой частью WordPress 5.x.

Редактор Gutenberg

В текущей версии WordPress редактор Gutenberg доступен только для страниц и записей по умолчанию.

Поскольку пользовательские типы постов WordPress присутствуют практически везде, недоступность редактора Gutenberg — это то, о чем сообщество говорило с момента выхода WordPress 5.0. Если у вас есть CPT на сайте WordPress с версией выше 5.x, то при создании или редактировании CPT вы увидите старый добрый классический редактор (Classic Editor).

Хотя в ближайших версиях планируется устранить эту особенность, вам не обязательно ждать, пока команда поддержки ядра WordPress выпустит обновление. На самом деле, если вы хотите использовать редактор Gutenberg с текущим кастомным постом на своем сайте, то нам нужно будет сделать минимум действий.

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

Регистрация пользовательских типов записей

Начнем с регистрации пользовательского типа записи. Этот процесс довольно прост и включает в себя добавление следующего фрагмента кода (сниппета — прим.ред.).

/* Register WordPress  Gutenberg CPT */
function cw_post_type() {

    register_post_type( 'portfolio',
        // WordPress CPT Options Start
        array(
            'labels' => array(
                'name' => __( 'Portfolio' ),
                'singular_name' => __( 'Portfolio' )
            ),
            'has_archive' => true,
            'public' => true,
            'rewrite' => array('slug' => 'portfolio'),
 
        )
    );
}
 
add_action( 'init', 'cw_post_type' );

Когда сниппет установлен, пользовательский тип поста зарегистрирован. Однако, что удивительно — когда вы попытаетесь создать или отредактировать пользовательский тип поста, вы все равно увидите старый редактор Classic.

Как включить Gutenberg для пользовательских типов записей WordPress

Добавление поддержки Gutenberg

Теперь, чтобы включить редактор Gutenberg в пользовательских постах WordPress, необходимо выполнить дополнительный простой шаг — добавить следующий фрагмент кода к сниппету выше:

  1. добавить поддержку редактора,
  2. добавить ключ show_in_rest и установить его в true через ваш пользовательский тип поста
'show_in_rest' => true,
'supports' => array('editor')

Как вы можете видеть, приведенный выше фрагмент кода просто установил параметр 'show_in_rest' в значение 'TRUE'. После этого шага при создании или редактировании пользовательского типа поста вы увидите активным редактор Gutenberg.

Как включить Gutenberg для пользовательских типов записей WordPress

Код целиком

Вот код, который вы поместите в файл functions.php, расположенный в папке темы:

/*Register WordPress  Gutenberg CPT */
function cw_post_type() {

    register_post_type( 'portfolio',
        // WordPress CPT Options Start
        array(
            'labels' => array(
                'name' => __( 'Portfolio' ),
                'singular_name' => __( 'Portfolio' )
            ),
            'has_archive' => true,
            'public' => true,
            'rewrite' => array('slug' => 'portfolio'),
            'show_in_rest' => true,
            'supports' => array('editor')
        )
    );
}
 
add_action( 'init', 'cw_post_type' );

Подводим итоги

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

Если вам нужна помощь в этом процессе, оставьте комментарий, и я свяжусь с вами как можно скорее.

Сергей Ермилов
Опубликовано 26.08.2022
Категория: Статьи
Теги: ,

Добавить комментарий

Ваш адрес email не будет опубликован.