我有条件地显示菜单项。一切正常,但如果不返回子项,则希望删除父项。
例如,如果我有一个名为More 并且它有多个子项(主要是一个级别)。现在,如果我基于用户角色隐藏子项,并且对于某些角色没有可用的子项,那么我想删除More 菜单项,因为它没有子项。
我正在尝试以下代码,但自$item
是一个对象,array_search
行不通。那么,如果菜单项没有子级,我如何检查子级父级并删除该菜单项呢?
array_search( $item[ \'ID\' ], array_column( $item, \'menu_item_parent\' ) )
下面是根据用户角色隐藏菜单项的工作代码。public static function exclude_menu_items( $items, $menu, $args ) {
if ( current_user_can( \'administrator\' ) ) {
return $items;
}
foreach ( $items as $key => $item ) {
if ( $page = get_post( $item->object_id ) ) {
if ( $page->post_type == \'page\' ) {
$template = get_post_meta( $page->ID, \'_wp_page_template\', TRUE );
$post_type = self::get_cpt_for_template( $template );
if ( $post_type && ( ! current_user_can( \'cp_access_\' . $post_type ) || ! ( new self() )->is_current_user_granted_for_module( $post_type ) ) ) {
unset( $items[ $key ] );
}
}
}
}
return $items;
}