wake-up-neo.net

Sortieren Sie wp_nav_menu () nach Menüreihenfolge

Ich habe einen benutzerdefinierten Menü-Handler für das Back-End erstellt, der per Drag-Drop nach CMS-Seitenreihenfolge sortiert .

Das Problem ist nun, dass es anscheinend nicht möglich ist, wp_nav_menu auf eine andere als die voreingestellte Weise zu sortieren. Kann das wirklich wahr sein?

1
INT

Die nav_menu_items sind bereits nach menu_order sortiert.

Wenn Sie in das Menü Darstellung -> Menüs gehen und das Menü Reihenfolge anordnen, wird die Menüreihenfolge für jeden Menüpunkt aktualisiert.

Um den orderby-Parameter in der Abfrage zu ändern, die das Menü anzeigt, können Sie pre_get_posts verwenden, um es zu ändern. Beispiel:

add_action( 'pre_get_posts', 'wpse_sort_nav' );
function wpse_sort_nav( $query ) {
        if ( $query->is_main_query() && get_query_var( 'post_type' ) == 'nav_menu_item' )
            $query->set( 'orderby', 'ID' );
    }

ID und menu_order sind Ihre einzigen echten Optionen für die Sortierung mithilfe der Standardposttabelle. Es gibt keinen Titel und der post_name entspricht der ID.

Sie können dem Filter pre_get_posts zusätzliche Parameter hinzufügen, indem Sie die mit jedem nav_menu_item gespeicherten Metadaten verwenden.

Navigationsmenü-Metadaten:

_menu_item_menu_item_parent
_ menu_item_type
_ menu_item_object_id
_ menu_item_object
_ menu_item_target
_ menu_item_classes _menu_item_xfn
_ menu_item_url

6
Chris_O