Как добавить записи возможность создавать дочерние записи


Недавно у меня возникла потребность в том, чтобы у базового типа записи – Запись (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' );//подключаем поддержку атрибутов страницы

}

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

Как сделать обычную запись иерархичной в  WordPress