Uznałem za potrzebne usunięcie niektórych stron z listingu w sidebarze. Jako, że jestem leniwy, to nie chciało mi się poszukać, czy ktoś już nie zrobił plugina do tego… wymagałoby to myślenia, a dziś wybitnie nie mam do tego głowy ;) Więc jako że PHP w którym jest napisane WP, które znam dosć dobrze, i zazwyczaj nie muszę zbyt dużo przy nim myśleć (odnośnie takich drobiazgów), to sobie poprawiłem WordPressa ;)

Włączanie i wyłączanie tego fiuczera jest dość proste - zmiana wywołania funkcji wp_list_pages(). Jej argumentem jest string w formacie takim jak URLe (a=1&b=2&c=3) więc teraz wywołanie wp_list_pages() wygląda tak:

wp_list_pages('hidden=0')

(no, ciut inaczej w moim wypadku, ale to nie ma znaczenia…).

Zmodyfikowałem zatem funkcję get_pages() (pośrednio wywoływaną przez wp_list_pages()), a diff tej zmiany wygląda tak:

--- template-functions-post.php.org     2005-12-06 19:32:17.837970264 +0100
+++ template-functions-post.php 2005-12-06 19:32:53.698518632 +0100
@@ -277,6 +277,7 @@
        if (!isset($r['child_of'])) $r['child_of'] = 0;
        if (!isset($r['sort_column'])) $r['sort_column'] = 'post_title';
        if (!isset($r['sort_order'])) $r['sort_order'] = 'ASC';
+       if (!isset($r['hidden'])) $r['hidden'] = 1;

        $exclusions = '';
        if (!empty($r['exclude'])) {
@@ -297,6 +298,19 @@
        if ( empty($pages) )
                return array();

+       if (!$r['hidden'])
+       {
+         while (list($key,$val)=each($pages))
+         {
+           $id = $val->ID;
+           $hide = get_post_meta($id, 'hide', true);
+           if ('' != $hide)
+           {
+             unset($pages[$key]);
+           }
+         }
+       }
+
        // Update cache.
        update_page_cache($pages);

Teraz wystarczy jako Custom Field wstawić pole hide o wartości 1 (czy jakiejkolwiek innej), żeby dana strona nie była listowana w sidebarze ;)

Teoretycznie dobrze by było to zrobic jako plugin WP, ale już wspominałem, że nie chce mi się dziś myśleć. Poza tym łatwo to wyłączyć. I mam w planach rezygnację z WP ;) I jeszcze trochę wymówek bym znalazł jak by trzeba było ;)


A Ty? Co o tym myślisz?

Możesz używać w komentarzach następujących znaczników:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sblam! Antyspam