it-swarm.com.de

Untergeordnete Seiten automatisch zum Navigationsmenü hinzufügen

Ich habe in Wordpress ein benutzerdefiniertes Menü erstellt, das Links zu Beiträgen und Seiten enthält. Ich füge es meiner Kopfzeile mit dieser Codezeile hinzu:

<?php 

wp_nav_menu(
    array(
        'theme_location' => 'primary', 
        'depth'          => 0, 
        'menu_class'     => 'nav-menu',
    ) 
);

?>

Mein Problem ist, wenn ich eine untergeordnete Seite zu den obersten im Menü hinzufüge, werden diese nicht automatisch als Unterlinks im Navigationsbereich angezeigt. Ich weiß, dass ich sie jedes Mal manuell erstellen kann, indem ich das Menü neu erstelle, aber ich möchte in der Lage sein, einfach eine untergeordnete Seite in den Seitenabschnitt einzufügen und sie in der Navigation anzeigen zu lassen, ohne zum Menü gehen und es dort erstellen zu müssen auch, ob das Sinn macht?

Ich habe versucht, depth => 0 zu verwenden, aber das hat nicht funktioniert. Gibt es eine Möglichkeit, untergeordnete Seiten anzuzeigen, ohne sie in das benutzerdefinierte Menü integrieren zu müssen?

5
Desmond

hier ist, wie:

/**
* auto_child_page_menu
* 
* class to add top level page menu items all child pages on the fly
* @author Ohad Raz <[email protected]>
*/
class auto_child_page_menu
{
    /**
     * class constructor
     * @author Ohad Raz <[email protected]>
     * @param   array $args 
     * @return  void
     */
    function __construct($args = array()){
        add_filter('wp_nav_menu_objects',array($this,'on_the_fly'));
    }
    /**
     * the magic function that adds the child pages
     * @author Ohad Raz <[email protected]>
     * @param  array $items 
     * @return array 
     */
    function on_the_fly($items) {
        global $post;
        $tmp = array();
        foreach ($items as $key => $i) {
            $tmp[] = $i;
            //if not page move on
            if ($i->object != 'page'){
                continue;
            }
            $page = get_post($i->object_id);
            //if not parent page move on
            if (!isset($page->post_parent) || $page->post_parent != 0) {
                continue;
            }
            $children = get_pages( array('child_of' => $i->object_id) );
            foreach ((array)$children as $c) {
                //set parent menu
                $c->menu_item_parent      = $i->ID;
                $c->object_id             = $c->ID;
                $c->object                = 'page';
                $c->type                  = 'post_type';
                $c->type_label            = 'Page';
                $c->url                   = get_permalink( $c->ID);
                $c->title                 = $c->post_title;
                $c->target                = '';
                $c->attr_title            = '';
                $c->description           = '';
                $c->classes               = array('','menu-item','menu-item-type-post_type','menu-item-object-page');
                $c->xfn                   = '';
                $c->current               = ($post->ID == $c->ID)? true: false;
                $c->current_item_ancestor = ($post->ID == $c->post_parent)? true: false; //probbably not right
                $c->current_item_parent   = ($post->ID == $c->post_parent)? true: false;
                $tmp[] = $c;
            }
        }
        return $tmp;
    }
}
new auto_child_page_menu();
10
Bainternet