0
57
2019-01-21

WordPress - Как подключить редактор Gutenberg к кастомному типу записей

Короткая заметка о том как можно легко подключить новый редактор Gutenberg к кастомному (произвольному или пользовательскому) типу записей на WordPress сайте
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Решил написать короткую заметку что бы после появления нового редактора Gutenberg администраторы сайтов (в том числе и я) могли легко использовать его функционал в своих кастомных типах записей.

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

В примерах ниже я использую кастомный тип у которого слаг "aktsii", Вам же при применении кода необходимо будет заменить на свой.

Ручное создание и назначение Gutenberg при создании пользовательского типа записей

Данный способ предусматривает что кастомный тип Вы создаете самостоятельно без использования сторонних плагинов (например Custom Post Type UI). Создайте кастомный тип в файле function.php Вашей темы например так, и увидите как гутенберг редактор полюбит Ваш тип записей:

function create_post_types() {

  $labels = array(
    'name' => 'aktsii',
  );

  $args = array(
    'labels' => $labels,
    'public' => true,
    'has_archive' => true,
    'show_in_rest' => true, // Important !
    'supports' => array('title', 'thumbnail', 'editor'), // Ne pas oublier editor
    'menu_position' => 5,
    'menu_icon' => 'dashicons-awards',
  );

  register_post_type( 'aktsii', $args );

}
add_action('init', 'create_post_types' );

Создание кастомного типа записей с поддержкой Gutenberg, при помощи Custom Post Type UI

Создайте свой кастомный тип записей при помощи плагина Custom Post Type UI как обычно, но обязательно включите опцию "Show in REST API"

Show in REST API

На всякий случай вот код экспорта кастомного тип азаписей "aktsii" который необходимо импортировать на странице импорта все в том же плагине Custom Post Type UI.

{"aktsii":{"name":"aktsii","label":"\u0410\u043a\u0446\u0438\u0438","singular_label":"\u0410\u043a\u0446\u0438\u0438","description":"","public":"true","publicly_queryable":"true","show_ui":"true","show_in_nav_menus":"true","show_in_rest":"true","rest_base":"","rest_controller_class":"","has_archive":"true","has_archive_string":"","exclude_from_search":"false","capability_type":"post","hierarchical":"false","rewrite":"true","rewrite_slug":"","rewrite_withfront":"true","query_var":"true","query_var_slug":"","menu_position":"","show_in_menu":"true","show_in_menu_string":"","menu_icon":"dashicons-megaphone","supports":["title","editor","thumbnail","excerpt","trackbacks","custom-fields","comments","revisions","author","page-attributes","post-formats"],"taxonomies":[],"labels":{"menu_name":"\u0410\u043a\u0446\u0438\u0438","all_items":"\u0412\u0441\u0435 \u0430\u043a\u0446\u0438\u0438","add_new":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0410\u043a\u0446\u0438\u044e","add_new_item":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0410\u043a\u0446\u0438\u044e","edit_item":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c","new_item":"\u041d\u043e\u0432\u0430\u044f \u0430\u043a\u0446\u0438\u044f","view_item":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c  \u0410\u043a\u0446\u0438\u044e","view_items":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c  \u0410\u043a\u0446\u0438\u044e","search_items":"\u041d\u0430\u0439\u0442\u0438  \u043e\u0442\u0437\u044b\u0432 \u0410\u043a\u0446\u0438\u044e","not_found":"\u041d\u0435\u0442  \u0410\u043a\u0446\u0438\u0439","not_found_in_trash":"","parent_item_colon":"","featured_image":"","set_featured_image":"","remove_featured_image":"","use_featured_image":"","archives":"","insert_into_item":"","uploaded_to_this_item":"","filter_items_list":"","items_list_navigation":"","items_list":"","attributes":"","name_admin_bar":""},"custom_supports":""}}

Как отключить редактор Gutenberg для определенного кастомного типа записей

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

function mh_disable_gutenberg($is_enabled, $post_type) {

  if ($post_type === 'aktsii') return false;

  return $is_enabled;

}
add_filter('gutenberg_can_edit_post_type', 'mh_disable_gutenberg', 10, 2);

ПС. Вот и все, я описал основные моменты которые помогут Вам подключать новый редактор.