Zmiana kolejności wyświetlania stron i wpisów

Domyślnie strony w WordPressie są uporządkowane alfabetycznie, a wpisy na blogu według daty publikacji (od najnowszego do najstarszego). W większości wypadków nie ma potrzeby zmieniania tej kolejności, tym bardziej, że rzadko wyświetlamy listę stron, a nawet jeśli to robimy, to zwykle mamy możliwość ręcznego ich posortowania. Warto jednak wiedzieć, że istnieje możliwość zmiany domyślnego sortowania stron i wpisów.

Zmiana kolejności stron

Atrybuty stronyKolejność stron zwykle jest mało ważna – rzadko wyświetlamy ich listę, a najczęściej i tak robimy to w menu, gdzie łatwo i szybko możemy ustalić kolejność ręcznie. Strony posiadają jednak atrybut Kolejność, dzięki któremu możemy określić kolejność ich wyświetlania. Im mniejszą liczbę wprowadzimy, tym „wyżej” określona strona znajdzie się na liście. Można również podawać liczby ujemne, dzięki czemu unikniemy konieczności wprowadzania tego atrybutu dla wszystkich stron tylko po to, aby tylko jedną z nich przesunąć wyżej. Nie jest to zbyt intuicyjne, ale można się przyzwyczaić. Istnieją również wtyczki, dzięki którym możemy sobie ułatwić zmienianie kolejności stron – jedną z nich jest opisywany kilka dni temu Admin Managemen Xtended, która pozwala na modyfikację uporządkowania stron poprzez ich przeciąganie i upuszczanie za pomocą myszy.

Widget StronyGdzie kolejność stron może być istotna? Na przykład we wbudowanym w WordPressa widgecie Strony, który pozwala na wyświetlanie listy stron oraz na wybór sposobu ich sortowania. Jedną z opcji jest właśnie Kolejność stron, czyli wspomniany wcześniej atrybut Kolejność. Warto zauważyć, że widget ten nie pozwala na posortowanie wyświetlanej listy według daty publikacji stron – tak więc ustawienie kolejności jest w tym przypadku jedyną metodą na wymuszenie interesującego nas porządku.

Zmiana kolejności wpisów

W przypadku wpisów na blogu problem zmiany ich kolejności jest nieco bardziej złożony. Domyślnie są one posortowane według daty publikacji (od najnowszego do najstarszego), co jest naturalne i najlepiej pasuje do idei bloga, a na dodatek użytkownicy są do takiego układu przyzwyczajeni.

Wpis przyklejonyZanim zaczniemy kombinować ze zmianą kolejności wyświetlania wpisów na blogu, zastanówmy się, czy nie wystarczy nam skorzystanie z wbudowanej funkcji wpisów przyklejonych. Pozwala ona na oznaczenie wybranych wpisów jako przyklejonych, dzięki czemu są one zawsze wyświetlane na początku listy – najczęściej po to, aby je wyróżnić i zwrócić na nie uwagę czytelników. Sposób ten ma tę zaletę, że nie wymaga żadnych modyfikacji – a takie są zawsze najlepsze.

W przeciwieństwie do stron, wpisy nie mają atrybutu Kolejność. Nie oznacza to jednak, że mieć go nie mogą – trzeba jednak będzie posłużyć się kawałkiem kodu, który należy umieścić w pliku functions.php lub pliku wtyczki (ten tekst pomoże w wyborze najlepszego miejsca).

function wpzen_add_attributes_to_post() {
    add_post_type_support('post', 'page-attributes');
}
add_action('init', 'wpzen_add_attributes_to_post');

Atrybuty wpisuOd tej chwili wpisy posiadają atrybut Kolejność – boks pozwalający na nadanie mu wartości wygląda nieco inaczej niż w przypadku stron, ale działa dokładnie tak samo. Problem w tym, że WordPress nie bierze go w ogóle pod uwagę, tak więc aby za jego pomocą zmienić kolejność wyświetlania wpisów będziemy musieli posłużyć się kolejnym kodem do wklejenia:

function wpzen_change_post_order($query) {
    if($query->is_main_query()) {
        $query->set('orderby', 'menu_order');
    }
}
add_action('pre_get_posts', 'wpzen_change_post_order');

Kod ten powoduje, że wpisy wyświetlane w głównej pętli (czyli na stronach bloga, ale nie w widgetach czy różnych dodatkach wyświetlających listy wpisów poza stronami bloga) będą posortowane według wartości atrybutu Kolejność. Dla ułatwienia sortowanie jest ustawione malejąco – czyli od wartości największej do najmniejszej (dzięki temu wpisy z zerowymi wartościami nie wylądują na szczycie listy wpisów).

UWAGA! Wpisy bez ustawionego atrybutu Kolejność będą posortowane według identyfikatora (ID) wpisu.

Bezpośredni link