nagradzam tutoriale
  • O wyświetlaniu podstron w Wordpress

    dodano 03.10.2007 / komentarzy: 0 / autor: palmiak

    Wczoraj przypomniał o sobie pewien znajomy, który pyta mnie czasem o problemy związane z Wordpressem. Przypomniało mi to jego stare pytanie. Dlatego raz jeszcze opiszę ja w Wordpressie zrobić sztuczkę która pozwala na pokazywanie tylko “dzieci” strony.

    Wyobraźmy sobie sytuacje gdzie mamy dwie strony:
    X oraz Y, do X należą podstrony X1, X2, i tak dalej, odpowiedno do Y,
    należą Y1, Y2. Jak narazie nic trudnego. Tutaj pojawia sie
    pytanie: Jak wyswietlić w SIDEBARZE, podstrony X1, X2 [ oraz odpowiednio
    Y1,Y2 ], jednak aby nie wyświetlały sie strony nadrzędne X,Y?

    Najpierw musimy sprawdzić czy strona-rodzic istnieje (może w końcu być zły link czy coś) oraz czy to w co klikneliśmy jest stroną.

    Kiedy już mamy tą pewność pobieramy ID strony i staramy się odnaleźć go w bazie, a następnie namierzyć jego rodzica (robimy to w pętli aż znajdziemy tego ostatecznego rodzica). Wiedząc już coś takiego pozostaje nam tylko wypisać strony-dzieci za pomocą

    <?php wp_list_pages(‘child_of=’. $parent_id); ?>
     

    gdzie $parent_id to numer ID rodzica.

    Teraz czas na praktykę.

    W naszego sidebar.php musimy wkleić następujący kod

    <?php
            global $notfound;
                    if (is_page() and ($notfound != ‘1′)) {
                            $current_page = $post->ID;
                            while($current_page) {
                                    $page_query = $wpdb->get_row("SELECT ID, post_title, post_status, post_parent FROM $wpdb->posts WHERE ID = ‘$current_page’");
                                    $current_page = $page_query->post_parent;
                            }
                            $parent_id = $page_query->ID;
                            $parent_title = $page_query->post_title;

                            if ($wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = ‘$parent_id’ AND post_status != ‘attachment’")) {
            ?>

            <ul class="list-page">
              <?php wp_list_pages(‘child_of=’. $parent_id); ?>
            </ul>
            <?php } } ?>
     

    Musimy mieć jeszcze menu, które będzie pokazywało strony-rodziców, a takie otrzymamy następującym kodem:

                    <ul>
    <?php wp_list_pages(’sort_column=menu_order&title_li=&depth=-1 ‘); ?>
                    </ul>
     

    I tak oto problem Karola zostaje rozwiązany. Mam nadzieję, że innym też się to przyda.

    Napisz komentarz