menu link to custom post_type?

is there a way to add a custom post_type (directors) link to a menu? I can add the individual director posts but not the link to all of them.

I’d like to avoid using custom links as this will be used in several sites and not always at the root. (so making a default /directors/ wont always work). PLus i’d like it to behave like normal menu links when active etc.

Read More

best, Dan.

Related posts

Leave a Reply

1 comment

  1. ok – got this working with a walker in the end;
    (added a custom directors link to the menu)

    class Director_nav_links extends Walker_Nav_Menu {
        function start_el(&$output, $item, $depth, $args) {
            global $wp_query;
            $indent = ( $depth ) ? str_repeat( "t", $depth ) : '';
    
            $class_names = $value = '';
    
            $classes = empty( $item->classes ) ? array() : (array) $item->classes;
    
            $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
            $class_names = ' class="' . esc_attr( $class_names ) . '"';
    
            $output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'> ';
    
            $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
            $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
            $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
    
            //  automatically add wp folder to url
            if(strtolower($item->post_title) == 'directors' ) $item->url = get_post_type_archive_link('directors');
    
            $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
            $item_output = $args->before;
            $item_output .= '<a'. $attributes .'>';
            $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
            $item_output .= '<br /><span class="sub">' . $item->description . '</span>';
            $item_output .= '</a>';
            $item_output .= $args->after;
    
            $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
        }
    
    }