Mam dwa niestandardowe typy postów, które dotyczą nazwisk osób. Obecnie, podczas przeglądania widoków, po prostu wyświetla je wszystkie alfabetycznie, a paginacja dzieli je według liczb, co nie jest szczególnie pomocne, gdy próbujesz znaleźć konkretną osobę.
W szczególności poproszono mnie o utworzenie linków do stron dla osób, które wyglądają tak:
- AG
- HM
- NQ
- RQ
Mój problem - nie mogę wymyślić, w jaki sposób mogę wyszukać niestandardowe typy postów za pomocą pierwszej litery jednego pola. Nie jestem więc pewien, jak mogę utworzyć paginację w ten sposób. Czy ktoś ma jakieś sugestie? Dziękuję Ci!
custom-post-types
pagination
mcleodm3
źródło
źródło
Odpowiedzi:
Interesujące pytanie! Rozwiązałem to, rozszerzając
WHERE
zapytanie o kilkapost_title LIKE 'A%' OR post_title LIKE 'B%' ...
klauzul. Możesz również użyć wyrażenia regularnego do przeszukiwania zakresu, ale uważam, że baza danych nie będzie wtedy mogła korzystać z indeksu.To jest sedno rozwiązania: filtr w
WHERE
klauzuli:Oczywiście nie chcesz zezwalać na losowe wprowadzanie danych zewnętrznych w zapytaniu. Dlatego mam włączony etap dezynfekcji danych wejściowych
pre_get_posts
, który przekształca dwie zmienne zapytania w prawidłowy zakres. (Jeśli znajdziesz sposób, aby to naprawić, zostaw komentarz, bym mógł to poprawić)Ostatnim krokiem jest stworzenie ładnej reguły przepisywania, abyś mógł przejść do
example.com/posts/a-g/
lubexample.com/posts/a
zobaczyć wszystkie posty zaczynające się na tę literę (zakres).Możesz zmienić wzór reguły przepisywania, aby zacząć od czegoś innego. Jeśli dotyczy to niestandardowego typu postu, należy dodać
&post_type=your_custom_post_type
do podstawienia (drugi ciąg, który zaczyna się odindex.php
).Dodanie linków do stronicowania pozostaje dla czytelnika ćwiczeniem :-)
źródło
like_escape()
:)To pomoże ci zacząć. Nie wiem, jak przerwałbyś zapytanie przy konkretnej literze, a następnie powiedziałeś WP, że jest jeszcze jedna strona z większą ilością liter, ale poniższe zajmuje 99% reszty.
Nie zapomnij opublikować swojego rozwiązania!
źródło
Odpowiedź na przykładzie @ kaiser z niestandardowym typem postu jako funkcją akceptującą parametry początkowe i końcowe alfa. Ten przykład dotyczy oczywiście krótkiej listy elementów, ponieważ nie zawiera stronicowania dodatkowego. Zamieszczam to, abyście mogli włączyć tę koncepcję do swoich,
functions.php
jeśli chcesz.źródło
Oto sposób na zrobienie tego za pomocą filtrów
query_vars
iposts_where
:Souce: https://gist.github.com/3904986
źródło
To nie tyle odpowiedź, ale wskaźnik do kierunku, który należy obrać. Prawdopodobnie będzie to musiało być w 100% niestandardowe - i będzie bardzo zaangażowane. Musisz utworzyć niestandardowe zapytanie SQL (używając klas wpdb), a następnie do paginacji przekażesz te parametry do zapytania niestandardowego. Prawdopodobnie będziesz także musiał stworzyć nowe reguły przepisywania. Niektóre funkcje do sprawdzenia:
źródło