✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Dodaj niestandardowy widok do ekranu wszystkich postów

15

TL; DR: Będę pracował nad serią, w której przyjrzymy się, jak osiągnąć przydatne zadanie za pomocą taksonomii, prawdopodobnych kategorii, a następnie zrefaktoryzować je do wtyczki obiektowej, która będzie służyć jako wtyczka narzędziowa dla taksonomii, ogólnie .


Krótka historia postów OOP

Jakiś czas temu zrobiłem długą serię o zasadach programowania obiektowego (i próbowałem podzielić się przyzwoitą ilością informacji o tym, jak osiągnąć pewne rzeczy w kontekście WordPressa).

Na przestrzeni lat napisałem również kilka artykułów na temat całego paradygmatu dla tych, którzy są zainteresowani nadrobieniem niektórych z tych artykułów.

Byłbym niedbały, gdybym nie powiedział, że mój dobry przyjaciel też napisał książkę na ten temat.

I tak, ponieważ myślałem o różnych tematach do pisania (po wzięciu wprawdzie dłuższego czasu wolnego niż planowałem), pomyślałem, że może warto porozmawiać o praktycznych rzeczach, które możemy zrobić z normalnymi API i hookami, a potem przerobić to na rodzaj wtyczki użytkowej.

Dodaj widok niestandardowy

Na potrzeby pracy, którą zamierzam podzielić się w tym demo, używam:

Jeśli chcesz śledzić to, co mam na myśli, wykorzystaj wszystkie powyższe (nie wiem, czy będę dzielić się wszystkim, ale jeśli zobaczysz zrzuty ekranu i fragmenty kodu, będziesz wiedział, skąd to pochodzi ).

Oto krótka dygresja na temat viewsWordPressa (i to nie jest jak Widoki w sensie MVC lub MVVM ).

Widoki WordPress

W chwili pisania tego tekstu nie wydaje się, aby było jasne, zwięzłe stwierdzenie, czym jest widok WordPress. Pod względem dostępnego haka mamy views_edit-post.

Więc jeśli weźmiemy ten konkretny haczyk i to, co robi, może wystarczyłoby coś takiego:

Widok WordPress to strona, na której możemy wyświetlić wszystkie posty, które spełniają określone kryteria.

Po wyjęciu z pudełka te kryteria zwykle obejmują posty takie jak:

  • Opublikowany,
  • Warcaby,
  • Śmieci,
  • Zaplanowany,
  • I tak dalej.

Ale co, jeśli masz inny post, który ma inne kryteria, według których chcesz filtrować? Jasne, możesz filtrować według listy rozwijanej, która jest widoczna na ekranie (powiedzmy, według kategorii) i to jest w porządku, ale co, jeśli chcesz użyć niestandardowych kryteriów z [dowolnego powodu]?

Na przykład, co zrobić, jeśli nie chcesz klikać określonego elementu, następnie filtrować, a następnie przeglądać posty? Zamiast tego chcesz zobaczyć link do kryteriów, liczbę wpisów spełniających kryteria, a następnie filtrować według nich?

Tutaj w grę wchodzi możliwość edycji widoków.

Na potrzeby tego posta omówię, jak wprowadzić nową kotwicę u góry strony, która będzie zawierać listę postów dla określonej kategorii.

Jaki jest nasz pogląd?

W tym przypadku użyjemy Uncategorized, ponieważ domyślna instalacja ma już dostępny nieskategoryzowany post i możemy łatwo dostosować niektóre zmiany w tym zakresie.

Aby to zrobić, napiszemy a mu-pluginwięc zostanie umieszczony w mu-pluginskatalogu. Jeśli Twoja instalacja go nie posiada, dodaj katalog, a następnie dodaj add-custom-view.phpdo katalogu:

Dodaj niestandardowy widok do ekranu wszystkich postów

Stąd początkowy plik wtyczki może wyglądać mniej więcej tak:

Dodaj niestandardowy widok do ekranu wszystkich postów

Początkowo wykonujemy następujące czynności:

  1. Ustawienie przestrzeni nazw,
  2. Dodanie filtra,
  3. Następnie konfigurujemy funkcję, która zaakceptuje domyślny zestaw $viewsi zwróci tablicę $viewspo ich zmianie.

Więc co musimy teraz zrobić?

Zestaw wymagań

Aby osiągnąć to, czego chcemy, musimy być w stanie:

  • Określ nazwę kategorii,
  • Dodaj link do kategorii wraz z liczbą postów z daną kategorią do listy widoków,
  • Możliwość określenia, czy jesteśmy na stronie kategorii, aby odpowiednio wystylizować listę
  • Możliwość filtrowania według typu postu,
  • I sposób na przetestowanie tego.

Wszystkie powyższe zostaną omówione w kodzie w dalszej części artykułu, ale piąty krok wymaga ręcznego utworzenia kategorii, abyśmy mogli łatwo przetestować, czy reszta kodu działa.

Więc śmiało zrób to. Kategoria może mieć dowolną nazwę (ja użyłem Sample Category). Po zakończeniu napiszmy kod z reszty wtyczki.

Określ nasz pogląd

Najpierw udostępnię funkcję, która określi, na której stronie się znajdujemy i wykona jedną z dwóch rzeczy:

  • Jeśli jesteśmy na stronie, która ma ten sam parametr ciągu zapytania dla identyfikatora naszej kategorii, podam nazwę klasy; w przeciwnym razie zwrócimy pusty ciąg.

W tym celu funkcja powinna:

  1. Zaakceptuj nazwę kategorii,
  2. Zainicjuj zmienną dla atrybutów,
  3. Porównaj zmienne ciągu zapytania
  4. Sprawdź, czy nazwa kategorii i identyfikator kategorii są takie same,
  5. I zwróć właściwą wartość, jeśli nie.

Tak wygląda moja funkcja:

Dodaj niestandardowy widok do ekranu wszystkich postów

Można to również uprościć za pomocą operatora trójskładnikowego, ale aby był jak najbardziej czytelny, na razie zostawiam to bez zmian.

Określ nazwę kategorii

Ta konkretna funkcja jest naprawdę bardzo łatwa i chociaż jesteśmy przyzwyczajeni do brania informacji od użytkowników w większości tego, co robimy, zamierzamy zakodować tę wartość na sztywno.

Aby to zrobić, po prostu przechowamy to w zmiennej, która jest przekazywana przez resztę kodu.

Dodaj niestandardowy widok do ekranu wszystkich postów

Widziałeś zmienną wcześniej przekazaną do powyższej funkcji i zobaczysz ją również w ostatecznej wersji kodu źródłowego.

Pobierz wyniki postów z kategorią

W tym celu musimy zrobić dwie rzeczy:

  1. Pobierz wszystkie object_idrekordy, które mają identyfikator tej kategorii,
  2. Odfiltruj treści, które nie dotyczą tych postów.

Chciałbym tutaj wspomnieć o kilku rzeczach: Po pierwsze, będziemy korzystać z get_cat_IDfunkcji zapewnianej przez WordPress. Pobiera identyfikator kategorii na podstawie przychodzącej nazwy.

Po drugie, używam dwóch funkcji – z których jedna jest pętlą – do badania statusu elementu. Nie jest to najskuteczniejszy sposób na zrobienie tego. Zamiast tego moglibyśmy użyć bardziej eleganckiego zapytania, aby pobrać tylko posty; jednak pierwsza iteracja tego ma pokazać, jak to zrobić nie tylko od podstaw, ale także dla odbiorców, którzy mogą nie być tak zaznajomieni z innymi aspektami pisania kodu.

W ten sposób otrzymujemy wszystkie rekordy w WordPress, które są oznaczone jako Uncategorized.

Dodaj niestandardowy widok do ekranu wszystkich postów

I z tym bierzemy wyniki i wysyłamy je do tej funkcji, która zwróci liczbę elementów, które są tylko postami.

Dodaj niestandardowy widok do ekranu wszystkich postów

Dzięki temu mamy większość tego, czego potrzebujemy, aby zacząć budować naszą kotwicę widzenia.

Wygeneruj kotwicę widoku

Teraz, gdy mamy już wszystkie funkcje niezbędne do wygenerowania kotwicy widoku, musimy połączyć je razem w sprintfcelu bezpiecznego formatowania ciągu.

Celem jest wygenerowanie kotwicy, która:

  • Wygląda jak reszta kotwic,
  • Pokazuje liczbę postów,
  • Jest pogrubiony za każdym razem, gdy przeglądasz wspomniane posty.

Aby to zrobić, musimy zbudować link i dodać odpowiednie argumenty ciągu zapytania. Oznacza to, że utworzymy link do edit.phpz argumentami dla:

  • identyfikator kategorii,
  • rodzaj stanowiska,
  • i wszystkie posty, które mają tę kategorię.

Następnie musimy uwzględnić:

  • wszelkie atrybuty do stylizacji linku,
  • nazwa kategorii,
  • i tylko treść posta post_type.

W tym celu możemy skorzystać z funkcji:

Dodaj niestandardowy widok do ekranu wszystkich postów

To robi kilka rzeczy:

  1. Akceptuje standardową tablicę $viewsz WordPressa,
  2. Dodaje naszą niestandardową kotwicę, jak opisano powyżej,
  3. Wstawia go do $viewstablicy,
  4. Zwraca go do WordPressa w celu renderowania.

I to wszystko!

Testowanie tego

Aby to przetestować, załaduj przeglądarkę i powinieneś zobaczyć nowy link Uncategorized obok pozostałych kotwic, takich jak Wszystkie, Opublikowane, Kopalnia, Kosz, Zaplanowane itp.

Następnie zmień kategorię postów i usuń Uncategorized, a następnie ponownie odwiedź lub odśwież stronę Wszystkie posty, a zobaczysz, że link jest aktywny i stylizowany, w zależności od tego, jak go przeglądasz, i zawiera liczbę skategoryzowanych postów jako takie też.

Teraz do GitHuba

Załadowałem pierwszą iterację tej wtyczki na GitHub, więc możesz ją pobrać i umieścić w swoim mu-pluginskatalogu w celu przetestowania.

W nadchodzących postach chciałbym zacząć od zmiany tego na paradygmat obiektowy, więc są to zmiany, które nadchodzą we wtyczce i treści w przyszłych postach.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów