Фильтровать wordpress-меню по названию категории

Мне нужно отфильтровать меню wordpress по названию категории.

То, что я нашел до сих пор, это следующий цикл, который дает мне все пункты меню:

function exclude_menu_items( $items, $menu, $args ) {
    // Iterate over the items to search and destroy
    foreach ( $items as $key => $item ) {
        //if ( $item->object_id == 168 ) unset( $items[$key] );
        print_r($item);
        echo '<br>';
        //var_dump(get_the_category($item->ID));
        //echo get_query_var('cat');
    }

    return $items;
}

add_filter( 'wp_get_nav_menu_items', 'exclude_menu_items', null, 3 );

Я добавил возможность для страниц иметь такие категории:

function add_categories_for_pages() {
    register_taxonomy_for_object_type('category', 'page');
}
add_action( 'init', 'add_categories_for_pages' );

Но теперь, как я могу получить категорию страниц из пункта меню?


person Raphael Jeger    schedule 11.04.2015    source источник


Ответы (1)


Кажется, я нашел решение, я не знаю, лучшее ли оно, но пока оно работает:

function exclude_menu_items( $items, $menu, $args ) {
    // Iterate over the items to search and destroy
    foreach ( $items as $key => $item ) {
        $categories = get_the_category( $item->object_id );
        foreach($categories as $category){
            if($category->cat_name != 'mycatname'){
                unset( $items[$key] );
            }
        }
    }
    return $items;
}

Что вы думаете?

person Raphael Jeger    schedule 11.04.2015