Como adicionar links de página de arquivo de tipo de postagem personalizada ao menu de navegação?

9

Eu não consigo descobrir isso. Parece não haver caixa de seleção ou algo similar em função para adicionar a página de arquivo de tipo de postagem personalizada recém-criada no menu.

Além disso, o link deve estar ativo, se você estiver na página. Isso provavelmente não é possível, mas existe algum plugin para isso? Por amor de mim, não consigo encontrá-lo: (

Eu só encontrei este plugin chamado Arquivos de tipo de postagem personalizados nos menus Nav , que realmente não faz nada, mas adiciona um link personalizado ao menu ... com o URL completo do site. Não fica ativo ou não é muito dinâmico.

Eu pensei que, provavelmente, a maneira mais fácil seria substituir wp_nav_menu() e adicionar meus links manualmente e, em seguida, usar $_GET information para controlar o "link ativo no momento".

    
por Kalle H. Väravas 05.12.2011 / 16:37

2 respostas

1

Este é um método que acho que deve funcionar (embora não seja testado).

//Hook on to the filter for the (custom) main menu
// 'wp_list_pages' filter is a fallback, when a custom menu isn't being used 
add_filter( 'wp_list_pages', 'new_nav_menu_items' );
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );
//Can also hook into a specific menu...
//add_filter( 'wp_nav_menu_{$menu->slug}_items', 'new_nav_menu_items' );

function new_nav_menu_items($items) {
    global $wp_query;
    $class ='';

    //Checks if we are viewing CPT 'myposttype', if so give it the 'active' class.
    if(isset($wp_query->query_vars['post_type'])&& $wp_query->query_vars['post_type']=='myposttype') 
        $class = 'current_page_item';

    //This generates the url of the CPT archive page
    $url = add_query_arg('post_type','myposttype',site_url());

    $myitem = '<li class="'.$class.'"><a href="'.$url.'">My Custom Post Type</a></li>';

    $items = $items . $myitem;
    return $items;
}

Isto não me parece ser a solução mais limpa, mas não sei de nenhum outro modo. Se houver, eu gostaria de ver isso!

Por fim, o link para o qual o item personalizado é vinculado não é 'bonito' - mas você pode fazer isso se você for um novato no CPT (assumindo que os permalinks personalizados estão sendo usados ...)

    
por Stephen Harris 05.12.2011 / 17:21
2

A partir do WordPress 4.4 (dezembro de 2015), os links dos arquivos personalizados do tipo Post são agora oficialmente suportados no núcleo do WordPress sem qualquer código de terceiros ou plugins necessários.

Você pode ler todo o tíquete Trac # 16075 para uma discussão completa ou a postagem Make WordPress Core para um resumo dos rótulos adicionais .

Para ativar o novo suporte interno para links de menu de arquivamento, os tipos de postagem personalizados devem ser registrados com valores que não sejam falsey (ou seja, verdadeiros) para has_archive , publicly_queryable e show_in_nav_menus :

add_action( 'init', function () {
    register_post_type( 'movies',
        array(
            'labels' => array(
                'name' => __( 'Movies' ),
                'singular_name' => __( 'Movie' ),
                'archives' => __( 'Movies' ),
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array(
                'slug' => 'movies',
            ),
        )
    );
});

Com essas adições, você verá um novo metabox na aparência > Menus tela do administrador.

O link do tipo de arquivo postar pode ser encontrado na guia "Visualizar tudo" no tipo de postagem metabox:

  

Nota:Podesernecessárioalternaragavetade"opções de tela" e garantir que seu nome "Arquivo de tipo de postagem" (por exemplo, Filmes) esteja marcado para que apareça na tela Menus.

    
por rjb 25.01.2017 / 20:59