Ordenar por estructura de menú

2

Como estoy haciendo una página web. Aquí está la pregunta que hice anteriormente:

Llamando a páginas específicas con wp consulta Parte II

Como llamo a todas las páginas por WP_Query, que es "orden por = ASC", quiero llamarlo "orden por estructura de menú", no menu_order.

Para E.g:

Ahora quiero llegar a la cima, luego a los servicios y luego a los testimonios. depende de la estructura del menú ...

¿Cómo puedo lograrlo? Por favor, ayuda ... ¡Gracias de antemano!

    
pregunta Hussy571 26.03.2015 - 19:49

2 respuestas

3

Usted puede ser capaz de usar una WP_Query en nav_menu_item ya que es su propio tipo de publicación. Nunca he hecho esto, pero quizás funcione como lo necesitas, vale la pena intentarlo. Hay otras tres posibilidades:

Opción 1: obtenga sus elementos del menú de navegación

Hay una función llamada wp_get_nav_menu_items() que le devolverá una serie de elementos de su menú que luego puede recorrer y mostrar. Aquí hay un ejemplo de cómo podrías usarlo. Hay algunos "¡Gotcha!" aquí:

  • $item->ID es el ID de elementos de navegación actual no el post_id . La ID de la publicación ahora es $item->object_id .
  • $item->title es el título de los elementos de navegación actuales y no necesariamente el post_title , aunque por defecto es, todavía se puede modificar y cambiar. La forma más confiable de obtener el título de la publicación es usar la función object_id y pasarla a la función get_the_title() .
$nav_items = wp_get_nav_menu_items( 'Main Menu', array(
    'order'                  => 'ASC',                  // List ASCending or DESCending
    'orderby'                => 'title',                // Order by your usual, menu_order, post_title, etc. Check WP_Query
    'post_type'              => 'nav_menu_item',        // To be honest, I'm not sure why this is an option, leave it be.
    'post_status'            => 'publish',              // If there are private / draft posts in our menu, don't show them
    'output'                 => ARRAY_A,                // Return an Array of Objects
    'output_key'             => 'menu_order',           // Not sure what this does
    'nopaging'               => true,                   // Not sure what this does
    'update_post_term_cache' => false                   // Not sure what this does
) );

if( ! empty( $nav_items ) ) {
    foreach( $nav_items as $item ) {
        echo "{$item->title} - " . get_the_title( $item->object_id );
        echo "<br />\n";
    }
}

Opción 2 - Navegador de navegación personalizado

Usted podría simplemente mostrar su menú usando wp_nav_menu() y pasar un Custom Walker Function para modificar es salida Un ejemplo de esto podría ser extraer automáticamente las páginas secundarias de los elementos de ese menú, sin agregar esas páginas al menú físico. Clase de paseador de niños

Opción 3 - Orden de menú de página

Generalmente cuando creo un sitio web para un cliente tengo un menú de WordPress y también duplico el orden de la página de los paneles de administración con el atributo de página menu_order . De esta forma, puede consultar las páginas utilizando WP_Query y orderby => 'menu_order'

Aparte de eso, en resumen, no es fácil orderby => 'My Menu' , tendrás que encontrar una alternativa o una solución alternativa.

    
respondido por el Howdy_McGee 26.03.2015 - 23:03
2

Puede usar la función wp_get_nav_menu_items () en lugar de wp_query () para recuperar los elementos del menú de un menú en particular El orden de la estructura del menú. Una vez que hayas hecho eso, puedes recorrer los elementos del menú uno por uno para hacer lo que desees (incluso filtrarlos más allá del tipo u otra información). Esto es asumiendo que todas las páginas están en el menú (que tendrían que estar si las estás usando para entender el orden).

    
respondido por el Amanda Giles 26.03.2015 - 23:04

Lea otras preguntas en las etiquetas