Jak wielu z was wie, w ubiegłym tygodniu Syed Balkhi uczestniczył w WordCamp Raleigh 2012. Podczas tego wydarzenia jeden z jego tweetów wywołał sporą debatę. W tym artykule nasz założyciel Syed Balkhi będzie debatować, czy niestandardowe typy postów WordPress należą do funkcji.plik php lub we wtyczkach. Poniżej znajduje się tweet, który rozpoczął tę debatę:
Nie dodawaj niestandardowych typów postów w funkcjach.php – > zawsze powinieneś używać wtyczki specyficznej dla witryny – wpbeg.in/vcXr7j ~ wcraleigh
– Początkujący WordPress (@wpbeginner) 4 listopada 2012
Po tweecie pojawiło się wielu renomowanych ludzi ze społeczności WordPress. Możesz zobaczyć całą rozmowę tutaj. Curtis McHale posunął się o krok dalej i omówił ten temat w swoim nowym wpisie na blogu.
Rozmowa z Twittera przyniosła kilka świetnych punktów.
Podsumowanie argumentów
Argument Plugins: Użytkownik zawsze będzie miał DANE, nawet jeśli zmieni temat. Może nie wygląda tak ładnie, ale tam zostanie.
Funkcje.Argument php: Dane bez projektu byłyby nieistotne. Jeszcze bardziej zmyli użytkowników.
Z którą stroną się bardziej zgadzasz? Oczywiście obie strony mają swoje problemy, ale co jest mniejszym złem?
Oto dlaczego uważamy, że niestandardowe typy postów powinny Zawsze żyć w specyficznej dla witryny wtyczki lub oddzielnej wtyczki całkowicie.
Niech Żyją Dane
Niestandardowe typy postów to dane. W większości przypadków Twoje dane przetrwają bieżący projekt. Zmieniając kilka razy nasze tematy, rozumiemy to stwierdzenie wyraźnie. Posty, strony, linki, załączniki i wersje to wszystkie typy postów, które są wbudowane w WordPress. Ponadto mamy typy postów, takie jak książki, Referencje, oferty itp. Wyobraźcie sobie, że zmienimy temat i wszystko zniknie. Na pewno nie chcielibyśmy, żeby tak się stało.
Mając programistów w naszym zespole, nie powinno to mieć większego znaczenia. Biorąc pod uwagę, że wszystkie nasze motywy są projektowane na zamówienie przez nasz zespół, jaka to różnica? Sekret tkwi w dwóch słowach: czasie i centralizacji. Tak długo, jak mamy wszystkie niezbędne dane, wszystko, co musimy zrobić w przyszłości, to zmienić stylizację. Nie będziemy musieli się martwić o kopiowanie i wklejanie funkcji z jednego pliku do drugiego za każdym razem. Co zrobić, jeśli chcesz odtworzyć funkcjonalność? Po prostu weź wtyczkę i upuść ją w nowej witrynie. Zmień stylizację i gotowe.
Zasady i normy
Kiedy używasz słowa Zawsze tak jak my w naszym tweecie, może ono oznaczać zarówno regułę, jak i standardy. Zarówno zasady, jak i standardy są tworzone dla większości. Zawsze będą specjalne scenariusze przypadków, w których reguły są naginane, a standardy łamane, ale to nie znaczy, że powinniśmy całkowicie się ich pozbyć.
Istnieje mnóstwo ogólnych typów postów, które w większości wymagają tego samego zestawu dodatkowych pól meta. Niektóre przykłady, które przychodzą na myśl, to: Cytaty, książki, przepis, Referencje, Portfolio itp.
Biorąc pod uwagę dużą liczbę tematów fotografii i portfolio dostępnych na rynku wolnym i komercyjnym, prawie nie ma sensu, aby użytkownik ponownie wprowadzał wszystkie swoje niestandardowe informacje o typie postu za każdym razem, gdy zmienia motyw. Spójrzmy na przykładowy scenariusz:
Fotograf – Konfiguracja użytkownika WordPress, który ma funkcjonalność bloga (domyślnie” post ” CPT). Chce dodać portfolio swoich prac (wymaga portfolio CPT). Chce pokazać referencje klientów(wymaga świadectwa CPT). Wszystkie te informacje na pewno będzie żyć obok projektu tematu. Rok później użytkownik chce zmienić wygląd swojej witryny i odświeżyć ją. Znajduje nowy motyw, który ma wszystkie podobne funkcje. Jak tylko zmieni temat, bum. Wszystkie poprzednie dane, które wprowadził, zniknęły. Istnieje menu o nazwie Portfolio I menu o nazwie Referencje, jednak żadne z danych tam nie ma. Użytkownik myśli “Jasna cholera, straciłem całą treść”. Tworzy nowe pytania dotyczące wsparcia na forum. Wysyła e-maile do witryn takich jak WPBeginner itp. Jeśli nie otrzymają dobrej odpowiedzi, będą musieli ponownie wprowadzić wszystkie dane. To jest gówniane doświadczenie użytkownika.
Jak więc rozwiązać ten problem?
Możliwe Rozwiązanie?
Tworzymy nową standardową bazę. Justin Tadlock już zaczął pracować nad tym problemem jakiś czas temu, tworząc wtyczkę base portfolio. Czy będzie to idealne rozwiązanie dla każdego? Nie, ale dla większości.
Jak pyta Justin w swoim poście, jakie standardowe pola powinny być zawarte we wtyczce portfolio (odnosząc się do post meta). Ten rodzaj rozmowy musi mieć miejsce wśród programistów, którzy tworzą podobną funkcjonalność w swoich motywach. Po co kopiować i wklejać to samo w kółko z jednego motywu do drugiego, skoro można to zrobić za pomocą wtyczki? Gdy stanie się standardem, inni autorzy tematów zaczną się do niego dostosowywać.
Na przykład obserwujemy wzrost wsparcia stylu dla form grawitacyjnych w ramach motywów WordPress, takich jak Genesis i inne. Dlaczego? Ponieważ rozumieją, że ich użytkownicy go używają.
Istnieje kilka solidnych motywów WordPress, które są ładowane z funkcjonalnością, która naszym zdaniem powinna być wtyczkami. Tematy forum pracy, tematy śledzenia problemów, tematy ogłoszeń niejawnych, tematy dotyczące nieruchomości itp. Wszystkie powinny być zasilane przez wtyczkę podstawową. To już się dzieje z WooCommerce. WooThemes wydali wiele motywów, które mają wbudowaną obsługę stylizacji dla wtyczki. Inne firmy tematyczne obiecały również udostępnić motywy e-commerce oparte na WooCommerce. Możesz przełączyć się z jednego motywu na drugi i zachować wszystkie produkty w takim stanie, w jakim są. To prawie tak, jakby temat się zmienił, ale wszystko po prostu spadło na swoje miejsce. To temat zmieniający doświadczenie, do którego musimy dążyć.
Dlaczego nie zrobić tego samego z Portfolio, referencjami i innymi rodzajowymi niestandardowymi typami postów? Czy to dlatego, że jest zbyt proste, a eCommerce to większa bestia do pokonania? Oczywiście e-commerce ma zbyt wiele pól w porównaniu z innymi, więc powinno być znacznie łatwiejsze dla tych ogólnych typów postów. Jest to tylko kwestia świadomego wysiłku w kierunku ulepszania rzeczy.
Spójrz na ReciPress plugin. Tworzy Niestandardowy metabox z polami receptur i dołącza go do słupków. Możliwe jest jednak dołączenie go z niestandardowymi typami postów. Każdy, kto korzysta z tej wtyczki, może zmieniać motywy bez konieczności przechodzenia przez takie kłopoty.
Miło byłoby zobaczyć, jak motywy takie jak AgentPress są zasilane przez scentralizowaną wtyczkę bazową. Byłoby wspaniale, gdyby Przejście zmieniających się tematów stało się łatwiejsze. Na przykład, jeśli użytkownik przełączy się z jednego motywu fotograficznego na inny, nie powinien to być chaos. Mogą się zdarzyć drobne błędy, ale przynajmniej w szerszym ujęciu wszystko zadziała.
Zawsze możesz podać przykłady super dostosowanych typów postów utworzonych do jednorazowego użycia klienta, ale to jest wyjątek, a nie reguła.
Co sądzicie o tym temacie? Gdzie powinien znajdować się kod niestandardowych typów postów? W funkcjach.plik php czy wtyczki?