我有一个自定义的分级帖子类型。我有3个级别的页面,我需要一种方法来检测我是在顶级、第二级还是第三级。我对此进行了研究,只能找到使用is\\u page()的示例,但显然这不适用于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\');
OR - 为每个级别的页面使用不同模板的方法
最合适的回答,由SO网友:Andy Macaulay-Brook 整理而成
你可以打电话https://codex.wordpress.org/Function_Reference/get_ancestors 在模板中。它将向您当前的帖子返回一个祖先数组,您可以使用数组的长度来查看您在层次结构中的深度。
在模板文件的顶部使用它来设置变量$post\\u depth,并使用它来调整目标CSS的body\\u类或有条件地包含模板部分。
像这样的方法会奏效:
<?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
为了保证健壮性,您可能希望检查嵌套在更深层次的帖子,并采取适当的措施。