Los hierarchical custom post types de WordPress, en español tipos de post personalizados jerárquicos (por favor, ya está bien de llamarlos «hereditarios»!!!), permiten establecer relaciones padre – hijo entre posts, similar a como se puede hacer con las páginas (el tipo de post «page» del core). Estas relaciones son muy útiles para organizar ciertos tipos de información (no siempre es adeucado) de una forma flexible que nuestros usuarios agradecerán. Veamos los dos puntos clave para su creación.

Registro de tipos de post jerárquicos

Cómo cualquier otro tipo de post personalizado (en adelante CPT – Custom Post Type), los tipos jerárquicos deben registrarse en el evento init utilizando la función register_post_type(). Esos detalles ya los deberías conocer. La diferencia con el tipo de post «normal» es el parámetro hierarchical que ha de ser explícitamente establecido en true. Por ejemplo:

add_action( 'init', function() {

    $args = array(
        'public'       => true,
        'hierarchical' => true,
    );

    register_post_type( 'micpt', $args );

} );

¡¡!IMPORTANTE!!

Si además de que el tipo de post acepte relaciones jerárquicas, quieres poder establecer estas relaciones en la pantalla de edición del post, es decir, que aparezca el select dónde poder seleccionar el post padre, tendrás que añadir soporte para page-attributes. Por ejemplo:

add_action( 'init', function() {

    $args = array(
        'public'       => true,
        'hierarchical' => true,
        'supports'     => array( 'page-attributes', 'title', 'editor', 'thumbnail' ),
    );

    register_post_type( 'micpt', $args );

} );

Referencias