Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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.

best, Dan.

share|improve this question
add comment

1 Answer

up vote 0 down vote accepted

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 );
    }

}
share|improve this answer
    
Why are you using a Walker? Aren't you adding only one link to the post type archive? –  Stephen Harris Feb 10 '12 at 12:18
    
want to make sure the custom link works across multiple sites whether its using the root directory or a custom folder. –  daniel Crabbe Feb 10 '12 at 15:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.