WordPress jako prosty(?) CMS

O przydatności WP jako prostego i szybkiego (w instalacji, niekoniecznie w działaniu :) ) systemu CMS wie prawie każdy. Jego sławna cecha bycia SEO-friendly rozpropagowała go dość mocno na świecie. Jednak pozostaje on nadal głównie platformą blogową i aby przystosować go do nowego zadania, trzeba poznać trochę jego wnętrze.

Większość systemów zarządzania treścią potrzebuje w pewnym momencie sensownego sposobu wyświetlania określonego menu na różnych podstronach, niezależnie od głębokości zagnieżdżenia. Banalne zadania, ale patrząc na różne fora, przysparza wielu problemów. Poniżej moje rozwiązanie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$thisPage = get_post($post->ID);
if(is_array($thisPage->ancestors)) {
    $ancestor = end($thisPage->ancestors);
}
if($ancestor) { // jeśli strona ma rodziców wyświetlamy wszystko dla głównego rodzica
    $children = wp_list_pages('title_li=&child_of=' . $ancestor . '&echo=0');
} else { // jeśli nie, to dla danej strony
    $children = wp_list_pages('title_li=&child_of=' . $post->ID . '&echo=0');
}
if ($children) { // nie chcemy wyświetlać pustego elementu
?>
<ul>
    <?php echo $children; ?>
</ul>
<?php } ?>

komentarze i dyskusjaRSS komentarzy

  1. 1.

    Robert, 26 Paź 2008 @ 16:32

    Super, dzięki. btw. Kod wklejasz przy użyciu jakiejś wtyczki, czy to sam to ładnie kolorujesz?

  2. 2.

    kuba, 26 Paź 2008 @ 18:12

    @Robert: kredki i pędzelki i gotowe! A tak poważnie to jest to wp-syntax. Przy okazji – okazało się, że powyższy kod miał błąd (wyrzucał ostrzeżenie kiedy $thisPage->ancestors było puste), ale już go poprawiłem.

  3. 3.

    SpeX, 29 Lis 2008 @ 2:03

    A można jakiś przykład działania?

  4. 4.

    kuba, 29 Lis 2008 @ 14:02

  5. 5.

    […] kubazwolinski.com 00:26 03/02/2009 zwolin on-line » WordPress jako prosty(?) CMS kubazwolinski.com/…10/24/wordpress-jako-pros… Pokaż reakcje /* */ inne strony z tej witryny + obserwuj co […]

  6. 6.

    pukas, 3 Mar 2010 @ 21:19

    Dzięki, właśnie tego szukałem – mam takie menu na jednym z serwisów i przydało mi się :)