= 3.8 ) { $title = '' . __( 'Edit Content', 'bs_abep' ) . ''; $img = ''; } else { $title = '' . __( 'Edit Content', 'bs_abep' ) . ''; $img = '_no_dashicon'; } $admin_url = admin_url(); // Add the Parent link. $wp_admin_bar->add_menu( array( 'title' => $title, 'href' => false, 'id' => 'bs_abep_links' . $img, ) ); $valid_posttypes = bs_abep_get_post_types(); foreach ( $options as $post_type => $nice_name ) { if ( ! in_array( $nice_name, $valid_posttypes, true ) ) { continue; } $args = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_status' => 'publish', 'posts_per_page' => -1, 'post_type' => $post_type, ); // Filter the args now if ( has_filter( 'bs_abep_query_args' ) ) { $args = apply_filters( 'bs_abep_query_args', $args ); // Let's reset the post type in case the user inadvertently changed it - there's really no reaon to change it. $args['post_type'] = $post_type; } $bs_abep_query = new WP_Query( $args ); if ( $bs_abep_query->have_posts() ) : // We have some posts, let's add a parent menu $wp_admin_bar->add_menu( array( 'title' => $nice_name, 'href' => $admin_url . 'edit.php?post_type=' . $post_type, 'id' => $post_type, 'parent' => 'bs_abep_links' . $img, ) ); if ( is_post_type_hierarchical( $post_type ) && 'menu_order' === $args['orderby'] ) { // Sort them into a hierarchical list here $bs_abep_query->posts = bs_abep_sort_hierarchical_posts( $bs_abep_query->posts ); } foreach ( $bs_abep_query->posts as $post ) { if ( 0 !== $post->post_parent && 'menu_order' === $args['orderby'] ) { $label = '  – ' . ucwords( $post->post_title ); $parent_id = $post->post_parent; // Loop through to indent the post type the appropriate number of times $post_ancestors_count = count( get_post_ancestors( $parent_id ) ); for ( $i = 0; $i < $post_ancestors_count; $i++ ) { $label = '   ' . $label; } } else { $label = ucwords( $post->post_title ); } $url = get_edit_post_link( $post->ID ); $wp_admin_bar->add_menu( array( 'title' => $label, 'href' => $url, 'id' => $post->ID, 'parent' => $post_type, ) ); } endif; } } function bs_abep_sort_hierarchical_posts( $posts ) { $final_post_array = array(); foreach ( $posts as $index => $post ) { if ( 0 === $post->post_parent ) { $post_id_array[0][ $index ] = $post->ID; } else { $post_id_array[ $post->post_parent ][ $index ] = $post->ID; } } ksort( $post_id_array ); foreach ( $post_id_array[0] as $index => $post_id ) { $final_post_array[] = $posts[ $index ]; bs_abep_check_children( $post_id, $post_id_array, $final_post_array, $posts ); } return $final_post_array; } function bs_abep_check_children( $post_id, $post_id_array, &$final_post_array, $posts ) { if ( isset( $post_id_array[ $post_id ] ) ) { foreach ( $post_id_array[ $post_id ] as $index => $child_id ) { $final_post_array[] = $posts[ $index ]; bs_abep_check_children( $child_id, $post_id_array, $final_post_array, $posts ); } } } function bs_abep_activation_callback() { $options = get_option( 'bs_abep_settings', array() ); $default = array( 'types' => array( 'page' => 'Pages', ), ); if ( empty( $options ) ) { update_option( 'bs_abep_settings', $default ); } }