J'ai un type de message personnalisé qui est hiérarchique. J'ai 3 niveaux de pages, j'ai besoin d'un moyen de détecter si je suis au plus haut niveau, 2e niveau ou 3e niveau. J'ai examiné cette question et ne peux trouver que des exemples qui fonctionnent avec is_page () mais apparemment, cela ne fonctionne pas avec les CPT.
function nldf_gallery() {
$labels = array(
'name' => 'NLDF',
'singular_name' => 'NLDF',
'add_new' => 'Add New',
'add_new_item' => 'Add New NLDF',
'edit_item' => 'Edit NLDF',
'new_item' => 'New NLDF',
'all_items' => 'All NLDF',
'view_item' => 'View NLDF',
'search_items' => 'Search NLDF',
'not_found' => 'No NLDF found',
'not_found_in_trash' => 'No NLDF found in Trash',
'menu_name' => 'NLDF'
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'has_archive' => false,
'menu_position' => 4,
'menu_icon' => 'dashicons-format-gallery',
'supports' => array('title','editor','comments','revisions','page-attributes')
);
register_post_type('nldf', $args);
}
add_action('init', 'nldf_gallery');
OU - Une façon d'utiliser un modèle différent pour chaque niveau de pages
Vous pouvez appeler https://codex.wordpress.org/Function_Reference/get_ancestors dans votre modèle. Cela va retourner un tableau d'ancêtres à votre publication actuelle et vous pouvez utiliser la longueur du tableau pour voir à quelle profondeur vous êtes dans votre hiérarchie.
Utilisez-le en haut de votre fichier de modèle pour définir une variable $ post_depth et utilisez-le pour ajuster votre classe body pour la CSS ciblée ou pour inclure des parties de modèle de manière conditionnelle.
Quelque chose comme ça marcherait:
<?php
// single-nldf.php
// Template for displaying single NLDFs
$level = count( get_ancestors( get_queried_object_id(), 'nldf' ) );
add_filter('body_class','nldf_page_class_names');
function nldf_page_class_names($classes) {
// add 'class-name' to the $classes array
$classes[] = 'single-nldf-' . $level;
// return the $classes array
return $classes;
}
get_header( 'nldf-' . $level );
// loads header-nldf-0.php, header-nldf-1.php or header-nldf-2.php
get_template_part( 'loop', 'nldf-' . $level );
// loads loop-nldf-0.php, loop-nldf-1.php or loop-nldf-2.php
get_footer( 'nldf-' . $level );
// loads footer-nldf-0.php, footer-nldf-1.php or footer-nldf-2.php
Pour plus de robustesse, vous pouvez rechercher des publications imbriquées dans des niveaux plus profonds et effectuer une action appropriée.