it-swarm.com.de

Untergeordnetes Seitenmenü in der Seitenleiste

Ich möchte das Dropdown-Menü nicht für untergeordnete Seiten auf meiner Wordpress-Site verwenden, sondern die Seiten in der Seitenleiste auf der übergeordneten Seite anzeigen.

Dies ist der Code, den ich bisher habe (siehe unten), der jedoch nichts in der Seitenleiste anzeigt. Ich würde mich über Hilfe freuen!

Das ist in meiner functions.php:

function wpb_list_child_pages() { 

    global $post; 

    if ( is_page() && $post->post_parent )
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
    else
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
    if ( $childpages ) {
        $string = '<ul>' . $childpages . '</ul>';
    }
    return $string;
}

add_shortcode('wpb_childpages', 'wpb_list_child_pages');

und das ist der aufruf in der page.php (auch sidebar.php ausprobiert):

<?php wpb_list_child_pages(); ?>

Irgendwelche Ideen, was los ist ?!

In einem anderen Punkt dachte ich, dass die übergeordnete Seite in der Navigation aufgelistet werden sollte, damit es einfach ist, zu ihr zurückzukehren (obwohl sie sich in der Hauptnavigation befindet). Gibt es eine Möglichkeit, das erste Listenelement zur übergeordneten Seite zu machen?

Und noch eine Anmerkung: Die einzige Möglichkeit, die Dropdown-Liste ohne CSS zu deaktivieren/auszublenden, bestand darin, ein benutzerdefiniertes Menü unter Darstellung> Menü zu erstellen und die untergeordneten Elemente zu deaktivieren. Gibt es einen anderen, besseren Weg?

Danke im Voraus!

EDIT

Ich dachte nur, ich würde ein Update hinzufügen, um das Markup anzuzeigen, das ich ausgeben möchte. Mir wurde klar, dass ich den Titel/die übergeordnete Seite auch dort einfügen muss! Hier ist das Beispiel-Markup:

<nav class="page-nav">
    <h3>Navigation Title</h3>
    <ul>
        <li><a href="#">Parent page</a></li>
        <li><a href="#">Child page #1</a></li>
        <li><a href="#">Child page #2</a></li>
        <li><a href="#">Child page #3</a></li>
    </ul>
</nav>
2
user1406440

Wenn Sie versuchen, den Inhalt einer Funktion auszugeben, müssen Sie feststellen, ob Sie die Daten an eine andere Funktion (oder an eine andere Funktion, die Sie füttern möchten) übergeben oder direkt im Browser drucken möchten.

Wenn Sie return verwenden, gibt Ihre Funktion die Daten zurück, sodass Sie sie in einer sekundären Funktion wie folgt verwenden können:

second_function(first_function($input));

Wenn Sie den Inhalt einfach im Browser drucken möchten, verwenden Sie entweder echo oder print_r anstelle von return. Es wird empfohlen, in Ihrem Fall echo zu verwenden. Verwenden Sie jedoch nicht echo, während Sie Shortcode-Funktionen ausführen. Der Text wird so ausgegeben, wie Sie es nicht möchten.

Zurück zu unserem WordPress-Problem, sollen wir?

Verwenden Sie für die bereitgestellte Struktur die folgende Funktion:

function wpb_list_child_pages() { 

    global $post; 

    if ( is_page() && $post->post_parent )
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
    else
        $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
    if ( $childpages ) {
        $string = '
        <nav class="page-nav">
            <h3>Navigation Title</h3>
               <ul>
                   <li><a href="'.get_permalink($post->post_parent).'">'.get_the_title($post->post_parent).'</a></li>'
                   .$childpages.
               '</ul>
        </nav>';
    }
    return $string;
}

add_shortcode('wpb_childpages', 'wpb_list_child_pages');

Verwenden Sie nun diese Funktion, um Ihr Menü an eine beliebige Stelle auszugeben:

<?php echo wpb_list_child_pages(); ?>

oder machen Sie den Shortcode:

echo do_shortcode( ' [wpb_childpages] ' );

oder verwenden Sie den Shortcode in einem Text-Widget:

[wpb_childpages]

Alle produzieren das gleiche Ergebnis.

2
Jack Johansson