Como posso adicionar módulos (personalizados) ao App - Menus?

4

Alguém sabe como posso adicionar módulos (personalizados) ao App & ndash; > Menus (Ou tem um link com explicações sobre como fazer isso) para que quando as pessoas mudarem de menu no backend possam escolher o que adicionar ao seu menu (Páginas - Post - Links - Categorias - Tags - [módulo personalizado])

Faço esta pergunta porque quero criar um tema de uma página. Eu quero poder adicionar <section> s aos modelos para separar as diferentes 'páginas'. A idéia (áspera) que tenho é criar uma função que "varre" através dos modelos, isola as IDs das seções dessas seções e as adiciona como um módulo de menu ao backend. Dessa forma, as pessoas poderiam adicionar um item de menu a uma dessas seções aos seus menus.

    
por Toine 01.06.2014 / 07:56

1 resposta

2

Ao registrar um tipo de postagem personalizado, defina o argumento show_in_nav_menus to TRUE e o WordPress criará a caixa automaticamente. Isso funciona também para taxonomias personalizadas.

Exemplo, requer o PHP 5.4 ou mais recente.

add_action( 'wp_loaded', function() {

    $post_type = 'foo';

    add_action( 'registered_post_type', function( $registered ) use ( $post_type ) {

        if ( $registered !== $post_type )
            return;

        register_taxonomy(
            'bar',
            $post_type,
            [
                'label'             => 'Bars',
                'public'            => TRUE,
                'show_in_nav_menus' => TRUE
            ]
        );
    });

    register_post_type(
        $post_type,
        [
            'label'             => 'Foo',
            'public'            => TRUE,
            'show_in_nav_menus' => TRUE
        ]
    );
});

Adicionar uma caixa personalizada para qualquer outra coisa é mais difícil. Bem, adicionando é fácil, é apenas um metabox com o parâmetro $screen definido como nav-menus :

add_action( 'admin_init', function() {

    add_meta_box(
        'test',
        'Custom Box',
        function() {
            print 'Insert content here.';
        },
        'nav-menus',
        'side',
        'low'
    );
});

A parte difícil são as seguintes ações: criar o HTML adequado para os itens da lista, salvar esses itens com solicitações AJAX e renderizá-los em um menu de navegação no front-end. Inspecione as caixas internas para os detalhes. Repetindo e explicando que isso exigiria um romance.

A saída dos dois exemplos de código deve ser assim:

Você pode ver as caixas para o tipo de postagem Foo , a taxonomia Barras e a Caixa personalizada . Formulário é um dos meus próprios tipos de postagens nessa instalação, Localização de minhas taxonomias e Idiomas uma caixa personalizada para todos os idiomas disponíveis em uma rede multilingue construída com Multilingual Press.

    
por fuxia 05.06.2014 / 14:51

Tags