Czasami chcesz trochę pomieszać rzeczy podczas wyświetlania postów w swojej witrynie, może przez uczynienie listy losową, a nie tylko wyświetlanie ostatnich pięciu postów, jak każda inna witryna w mieście.

Dobrą wiadomością jest to, że jeśli dodasz niestandardowe zapytanie do swojej strony za pomocą WP_Query klaso, możesz to zrobić używając specjalnego argumentu, który losuje Twoje posty.

A co, jeśli chcesz pójść nieco dalej i pokazać losowe posty z różnych kategorii na swojej stronie, upewniając się, że posty nie są duplikowane, jeśli znajdują się w więcej niż jednej kategorii?

To możliwe.

W tym poście pokażę Ci, jak napisać zapytanie, które wyświetli losowy post z jednej z każdej kategorii najwyższego poziomu w Twojej witrynie, zapewniając, że nie tylko lista postów jest losowa i stale się zmienia, ale także odzwierciedla szeroki przekrój treści w Twojej witrynie.

Pierwsze Kroki

Aby śledzić ten post, potrzebujesz następujących narzędzi:

  • Edytor kodu
  • Instalacja rozwojowa WordPress

Musisz także zdecydować, w jaki sposób chcesz dodać swoje zapytanie. Możesz kodować go bezpośrednio do pliku szablonu motywu (takiego jak Strona główna) lub dołączyć go do Hooka akcji, jeśli twój motyw je posiada. Zamierzam użyć instalacji programistycznej mojej własnej strony, aby to zademonstrować, więc dodam mój kod do pierwsza strona.php szablon w moim temacie. Niezależnie od wybranej metody, kod zapytania będzie taki sam.

W tej chwili moja strona główna wygląda jak zrzut ekranu poniżej, z podświetlanymi postami, ale nie z każdej kategorii. Dodam listę losowych postów nad stopką. To nie będzie wyglądać zbyt ładnie, ale to tylko moja lokalna instalacja deweloperska!

My site's home page

Pobieranie kategorii

Pierwszą rzeczą jest pobranie listy kategorii. Możemy użyć get_categories() funkcja do tego, ale w tym przypadku chcemy pobrać kategorie najwyższego poziomu, w przeciwnym razie rzeczy mogą wymknąć się spod kontroli. Do tego używamy get_terms() i korzystać z rodzic wartość w swoich parametrach.

Zacznij od tego kodu:

Ładowanie gist 41344e991598d14be482039b9ed88e95

To pobierze każdą z kategorii najwyższego poziomu, a następnie sprawdzi, czy żadna z nich nie została zwrócona. Jeśli tak, to otworzy nowy sekcja element, wyprowadza nagłówek i uruchamia foreach pętla dla każdego z nich, dzięki czemu możemy wypisać listę postów.

Konfigurowanie zapytania

Następną rzeczą do zrobienia jest skonfigurowanie zapytania i zdefiniowanie jego argumentów. Robimy to w naszym foreach zapętl i użyj $term zmienna zdefiniowana już jako jeden z argumentów dla WP_Query.

Inside your foreach loop, dodaj to:

Ładowanie gist 41344e991598d14be482039b9ed88e95

Który definiuje argumenty dla zapytania:

  • typ postu, który jest postem,
  • orderby, czyli losowe,
  • liczba postów do wyjścia, czyli 1,
  • kategoria, która wykorzystuje tax_query aby ustawić to jako slug terminu pobranego przez get_terms.

Uruchamianie zapytania i pętli

Teraz mamy skonfigurowane zapytanie, przepuśćmy je.

Po argumentach zapytania, a jeszcze wewnątrz foreach loop, dodaj to:

Ładowanie gist 41344e991598d14be482039b9ed88e95

To wyświetla pozycję listy z tytułem postu i linkiem do niego. Teraz masz listę roboczą. Ale jest pewien problem.

Unikanie Duplikatów

Czasami okaże się, że zapytanie zwraca zduplikowane posty, Jeśli zostały dodane do więcej niż jednej kategorii. Musimy to naprawić.

Musimy dodać trzy linie kodu. Po pierwsze, po get_terms() funkcji, Dodaj ten kod, aby zdefiniować nową tablicę zmiennych o nazwie $do_not_duplicate:

Ładowanie gist 41344e991598d14be482039b9ed88e95

Następnie dodaj dodatkowy argument do zapytania, aby upewnić się, że posty w tej tablicy nie są uwzględniane:

Ładowanie gist 41344e991598d14be482039b9ed88e95

I na koniec, po tym, jak linia wyświetli tytuł postu w pozycji listy, Dodaj ID postu, który właśnie został wyprowadzony do tej tablicy:

Ładowanie gist 41344e991598d14be482039b9ed88e95

Gotowy Produkt

Twój końcowy kod będzie wyglądał tak:

Ładowanie gist 41344e991598d14be482039b9ed88e95

Pokazuje to, w jaki sposób zapytanie trafia do pętli foreach i gdzie dokładnie należy dodać kod, aby uniknąć duplikatów.

Rzućmy okiem na to na mojej stronie. Oto moja lista:

A random list of posts, one from each category

A jeśli odświeżę ekran, to się zmieni:

A second random list of posts, one from each category

(Jest podświetlony kilka postów Bez kategorii-muszę to naprawić!)

Losowe zapytanie jest fajne i trochę inne

Korzystanie z losowych zapytań do wyświetlania treści z całej witryny daje odwiedzającym możliwość znalezienia treści ze wszystkich kategorii. Zapewnia również, że Starsze Posty, a nie tylko najnowsze, są wyświetlane.

Jeśli chcesz, możesz dołączyć wszystkie swoje kategorie lub podkategorie danej kategorii najwyższego poziomu, edytując get_terms() funkcja. Lub możesz po prostu użyć jednej kategorii i wyprowadzić więcej losowych postów, edytując WP_Query klasy i usuwanie get_terms() funkcja. Wybór należy do ciebie!

Czy masz kreatywny sposób losowania kanałów treści z bloga? Opowiedz nam o tym w komentarzach.

Tagi:

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd „nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

WordPress Pingbacks & Trackbacks: Ultimate A-Z Guide

W artykule: Czym są Pingbacks i Trackbacks? Plus, dlaczego są ważneCzym Są…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…