Недавно у меня возникла потребность в том, чтобы у базового типа записи – Запись (post), – добавить возможность создавать иерархию, а точнее создавать родительские посты и прикреплять к ним дочерние. Такой функционал идёт в базе у страниц, но у записей он отключён.
Для того, чтобы достигнуть задуманное нам нужно использовать хук registered_post_type.
Вот пример кода:
add_action( 'registered_post_type', 'rb_change_posts_settings', 10, 2 );
function rb_change_posts_settings( $post_type, $post_type_object ){
if ( $post_type != 'post' ) {
return; //выходим из функции, если тип записи не post
}
$post_type_object->hierarchical = 1;//устанавливаем иерархию
$post_type_object->show_in_rest = 0;//отключаем гутенберг
add_post_type_support( 'post', 'page-attributes' );//подключаем поддержку атрибутов страницы
}В результате мы изменили настройки базового типа записи и сделали его иерархичным, а заодно и отключили гутенберг. Ниже представлен результат выполнения кода.
