¿Cómo puedo agregar módulos (personalizados) a Apariencia - Menús?

4

¿Alguien sabe cómo puedo agregar módulos (personalizados) a Apariencia - > Menus? (O tiene un enlace con una explicación sobre cómo hacer esto) para que cuando las personas cambien su menú en el backend puedan elegir qué agregar a su menú (Páginas - Publicar - Enlaces - Categorías - Etiquetas - [módulo personalizado])

Hago esta pregunta porque quiero crear un tema de una página. Quiero poder agregar <section> s a las plantillas para separar las diferentes 'páginas'.
La idea (que tengo) es crear una función que "escanee" las plantillas, aísle las ID de sección de estas secciones y agréguelas como un módulo de menú al backend. De esa manera, las personas podrían agregar un elemento de menú a una de estas secciones en sus menús.

    
pregunta Toine 01.06.2014 - 07:56

1 respuesta

2

Cuando registres un tipo de publicación personalizada, establece el argumento show_in_nav_menus en TRUE , y WordPress creará el cuadro automáticamente. Esto también funciona para taxonomías personalizadas.

Ejemplo, requiere PHP 5.4 o más reciente.

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

Agregar un cuadro personalizado para cualquier otra cosa es más difícil. Bueno, agregar es fácil, es solo un metabox con el parámetro $screen establecido en nav-menus :

add_action( 'admin_init', function() {

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

La parte difícil son las siguientes acciones: crear el HTML adecuado para los elementos de la lista, guardarlos con solicitudes AJAX y mostrarlos en un menú de navegación en el front-end. Inspeccione los cuadros incorporados para los detalles. Repetir y explicar eso requeriría una novela.

La salida de ambos ejemplos de código debería verse así:

Puede ver los cuadros para el tipo de publicación Foo , la taxonomía Barras y el Cuadro personalizado . Formulario es uno de mis propios tipos de publicación en esa instalación, Ubicación en mis taxonomías, y Idiomas un cuadro personalizado para todos los idiomas disponibles en una Red multilingüe construida con prensa multilingüe.

    
respondido por el fuxia 05.06.2014 - 14:51

Lea otras preguntas en las etiquetas