Jak stworzyć podstronę na której będzie się wyświetlał ostatni wpis z określonej kategorii?

  • Poziom trudności:

Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:

Czasami potrzeba stworzyć na WordPressie podstronę, która będzie zawierała tylko najnowszy wpis z określonej kategorii. Bez rozpraszaczy, nawigowania do kolejnych wpisów czy dodatkowych elementów. Wydaje się, że sprawa jest prosta, aczkolwiek aby taką funkcjonalność dodać należy dokonać modyfikacji w plikach motywu (stworzyć nowy szablon) oraz zmienić wyświetlanie wpisów w ramach pętli, którą zawiera zdecydowana większość motywów WP.

Na samym początku proponuję żebyś połączył się poprzez klienta FTP ze swoją stroną i skopiował lokalnie plik page.php. Kopiowanie jest banalnie proste. Po połączeniu się poprzez np. menadżer stron po jednej stronie będziesz miał swoją przestrzeń na serwerze, a po drugiej dysk lokalny. Teraz wystarczy że wejdziesz do /wp-content/themes/ i do katalogu ze swoim motywem (jeśli nie jesteś pewien który to katalog możesz wejść do Wygląd -> Motywy, a następnie przeciągniesz z serwera na swój dysk plik page.php.

Na dysku zmień nazwę pliku z page.php na przykładowo page-jedenwpis.php. Teraz rozpocznij edycję tego pliku.

Zmiana nazwy szablonu

Pierwszą rzecz jaką powinieneś zmienić to informacja o nazwie przygotowywanego szablonu. Najprawdopodobniej na górze pliku znajdziesz taki fragment kodu PHP:

<?php
  get_header();
?>

Jeśli znajdziesz coś podobnego, wtedy w ramach kodu PHP czyli między otwarciem <?php i zamknięciem ?> dopisz linijkę:

/*
Template Name: Jeden wpis
*/

Dzięki temu WordPress będzie wiedział jak stworzony szablon się nazywa (jego nazwa to Jeden wpis) i na podstawie tej nazwy będzie można zadeklarować stronę, która wyświetli tylko jeden wpis z określonej kategorii.

Określenie kategorii i ilości wpisów na stronie

Przed nami kolejne zadanie – modyfikacja pętli wyświetlającej wpisy na stronach. Na początku powinieneś sprawdzić ID kategorii, której wpis będzie się wyświetlał na stronie. Możesz to sprawdzić wchodząc do sekcji Wpisy -> Kategorie i klikając na kategorię, której wpis powinien się wyświetlać na przygotowywanej stronie. Po kliknięciu na pasku adresu pojawi się ścieżka podobna do tej poniżej:

https://500sekund.pl/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=4&post_type=post

Może różnić się od powyższej ale przypuszczam, że będzie miała jedną cechę wspólną czyli znacznik tag_ID= i liczba podana po znaku „=”. Zapamiętaj tę liczbę – będzie Ci ona za chwilę potrzebna.

Czas na modyfikację pętli. Wróć do edycji pliku page-jedenwpis.php i znajdź tam rozpoczęcie pętli. Może ono wyglądać w następujący sposób:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

Przed początkiem tej pętli dodaj:

<?php query_posts('cat=4&posts_per_page=1'); ?>

Dzięki powyższej deklaracji na stronie oznaczonej szablonem „Jeden wpis” będzie się wyświetlać tylko jeden wpis z kategorii 4. Teraz zamiast 4 wpisz liczbę znalezioną po znaku równości po znaczniku tag_ID. Jeśli zależy Ci na wyświetleniu przykładowo dwóch najnowszych wpisów, wtedy w posts_per_page wpisz 2.

Po zapisaniu pliku przenieś go na serwer w miejsce gdzie znajduje się plik page.php. Teraz powinieneś mieć dwa tego typu pliki: page.php i page-jedenplik.php. Jeśli masz tylko jeden, znaczy to, że gdzieś po drodze popełniłeś błąd.

Wybór szablonu dla strony, która ma wyświetlać jeden wpis

To już końcówka. Teraz wystarczy stworzyć nową stronę poprzez sekcję Strony -> Dodaj nową i wybrać dla niej stosowny szablon z atrybutów strony.

strona-z-jednym-wpisem

Po opublikowaniu strony powinieneś widzieć na niej ostatni wpis z wybranej przez Ciebie kategorii.

UDOSTĘPNIJ

Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej: