Czy istnieje łatwy do zrozumienia schemat decydujący o tym, jaki kod należy do wtyczki lub motywu functions.php
?
Tam są wiele spraw i wielu debat o tym temacie, głównie dlatego, że istnieje kilka błędnych przekonań na temat wewnętrznych mechanizmów WordPressa. Proszę o odpowiedź w oparciu o fakty, a nie opinie.
Powinien wyjaśnić, jak radzić sobie z tymi punktami (i prawdopodobnie więcej):
- niestandardowe typy postów i taksonomie
- formularze kontaktowe
- skróty
- niestandardowe widżety
add_theme_support( 'automatic-feed-links' );
- SEO działa jak niestandardowe
meta
elementy - przełącznik motywów
Po obu stronach często występują zalety i wady. Nasze najpopularniejsze pytanie Najlepsza kolekcja kodu dla pliku functions.php zawiera wiele fragmentów kodu jako odpowiedzi, które są co najmniej dyskusyjne.
Potrzebujemy kryteriów, które początkujący może zrozumieć, może listy kontrolnej - z uzasadnieniem.
Zobacz także powiązane pytanie Chipa Bennetta na naszej meta stronie: pytania konkretnie dotyczące rozwiązania „bez wtyczki”
Powiązane: Gdzie umieścić fragmenty kodu, które znalazłem tutaj lub w innym miejscu w sieci?
Odpowiedzi:
Zacznę od tego pytania: Czy funkcjonalność związana jest z prezentacją treści, generowaniem / zarządzaniem treścią, witryną lub tożsamością użytkownika?
Jeśli funkcjonalność nie jest związana konkretnie z prezentacją treści , to jest ona wyraźnie na terytorium wtyczki. Ta lista jest długa:
wp_head
zawartość, taka jak linki kanoniczne, generator i inne meta HTML itp.)Jeśli funkcja jest związana do prezentacji treści , to jest kandydatem do włączenia do tematu. W tym momencie powróciłbym do kryterium przełączania motywów @ Raf912 : czy przeoczyłbyś funkcjonalność podczas przełączania motywów? Jeśli odpowiedź na to pytanie brzmi „ nie” , funkcjonalność należy do motywu. Kilka przykładów:
add_theme_support()
(chyba to powinno być oczywiste)Zwykle te dwa pytania zapewnią dość wyraźną linię różnicowania; są jednak wyjątki.
Niestandardowe typy postów
Niestandardowe typy postów, na przykład, są swoistą hybrydą generowania i prezentacji treści, biorąc pod uwagę sposób, w jaki Hierarchia szablonów działa dla stron indeksu archiwum pojedynczego typu i stron pojedynczych postów . Aspekt generowania treści CPT zwykle umieszczałby je prosto na terytorium wtyczek; wtyczki nie mogą jednak definiować stron szablonów, które z natury pasują do projektu / układu / stylu dla dowolnego motywu (szczególnie jeśli CPT wyświetla inny niż zwykły tytuł / treść / meta lub ma związane z nim niestandardowe taksonomie).
Długoterminowo rozwiązaniem tego rozbieżności, IMHO, jest posiadanie standardowej konwencji / konsensusu w sprawie definicji CPT dla określonych rodzajów treści (listy nieruchomości, wydarzenia w kalendarzu, produkty e-commerce, wpisy w książce / bibliotece multimediów itp. .). W ten sposób treść generowana przez użytkowników pozostanie przenośna między kompozycjami, które implementują standardową / konwencyjną definicję danego CPT, podczas gdy programiści zachowują elastyczność w definiowaniu projektu / układu / stylu tego CPT w plikach szablonów kompozycji.
Linki do mediów społecznościowych
Podobnie normalnie powiedziałbym, że linki profilu w mediach społecznościowych stały się niemal wszechobecne w obecnych Motywach, są Terytorium Wtyczki, ponieważ nie mają nic wspólnego z prezentacją treści. Najlepszym rozwiązaniem byłoby zdefiniowanie tych profili gdzieś w rdzeniu; jednak obecnie nie ma standardowych / konsensusowych sposobów definiowania tych łączy. Czy najlepiej je zdefiniować na poziomie konfiguracji witryny, czy na poziomie użytkownika? Jeśli na użytkownika, która meta użytkownika zostanie ujawniona w szablonie? itp.
Tak więc, w dalszej perspektywie, rozwiązaniem tej różnicy jest określenie przez rdzeń, gdzie te linki są zdefiniowane, lub społeczności twórców motywów, aby wypracować własny konsensus. W międzyczasie naprawdę nie ma na to nic, poza tym, aby były zdefiniowane w ramach każdego motywu.
źródło
add_theme_support( 'automatic-feed-links' );
nie jest prezentacyjny. Jest to jednak wymagane przez wytyczne tematyczne . Dlaczego konieczne jest ryzyko utraty tej funkcji po zmianie motywu?add_theme_support()
może być zaimplementowane tylko za pomocą motywu. Korzystanieadd_theme_support( 'automatic-feed-links' )
z motywu faktycznie zapewnia spójne wrażenia od motywu do motywu, ponieważ wygenerowane łącza do kanałów będą takie same.Łatwy test, w którym kod jest najlepiej umieszczony:
brakuje Ci funkcjonalności, blog nie działa poprawnie lub zostały fragmenty starego motywu (np. skróty)?
tak: włóż to do wtyczki
nie: zostaw to w functions.php
Przykłady: Napisz krótki kod. Po zmianie motywu w postach pozostają proste skróty. Więc lepiej będzie umieścić go we wtyczce.
Napisz funkcję, aby wyświetlić ostatnie komentarze. Po zmianie motywu wszystko jest w porządku, ponieważ może drugi motyw ma równoważną funkcję.
To naprawdę zależy od kodu i tego, co zrobi. Niektóre kody wpływają tylko na styl lub treść motywu, inne modyfikują posty na blogu.
źródło
functions.php
. Jeśli musi dotyczyć więcej niż jednego motywu, umieść go we wtyczce.Nie sądzę, że istnieje łatwa odpowiedź na to pytanie, ale założę się, że moglibyśmy stworzyć schemat blokowy, aby pomóc w podjęciu decyzji. Oto ogólny zarys takiego schematu blokowego, który można i należy rozszerzyć. Komentuj z sugestiami!
źródło
Stąd Tematy VS Wtyczki
Dodaj niestandardowy kod do motywu podrzędnego, aby po aktualizacji motywu nadrzędnego nie utracić kodu niestandardowego.
Możesz także utworzyć wtyczkę specyficzną dla witryny, która zawiera również cały kod niestandardowy.
Jeśli chodzi o pisanie kodu w porównaniu z wtyczkami, możesz używać wtyczek i funkcji, jednak dla większości tego, co chcesz, ręczne kodowanie jest najlepsze, ponieważ jest łatwiejsze do modyfikacji, z wyjątkiem niektórych przypadków, takich jak meta-boxy, w których możesz rozważyć użycie wtyczki, chyba że jesteś programistą motywów.
http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods
źródło
Wiem, że to martwy koń i Chip prawie go opisał, ale chciałem dodać kilka przemyśleń.
Jeśli tworzysz żywe programy i pracujesz na stronach Wordpress w wyznaczonych terminach, przekonasz się, że to naprawdę sprowadza się do czasu.
Częściej niż nie, szczególnie dla tych, którzy dopiero zaczynają, jest o wiele szybsze i łatwiejsze po prostu dodać do motywu wszystko, czego potrzebujesz, i nazwać to gotowym.
Biorąc to pod uwagę, jeśli pracujesz na wordpressie regularnie, powinieneś poważnie rozważyć wykonanie następujących czynności :
Powinno to obsłużyć wszystko, co zwykle musisz zrobić z wtyczką, w tym aktywację, dezaktywację, aktualizację wersji, budowanie paneli administracyjnych i odinstalowywanie.
Jeśli znajdziesz czas, aby to zrobić, znajdziesz:
Możesz teraz poprawnie budować i szybciej realizować przyszłe projekty.
Powinno to obsłużyć wszystko, co jest zwykle potrzebne w kompozycji:
Gdy to zrobisz, stwórz szkielet motywu potomnego, który używa twojego motywu podstawowego.
Po wykonaniu tych dwóch czynności tworzenie nowych witryn dla ludzi staje się znacznie szybsze.
Jeśli wykonasz powyższe czynności, możesz pracować nad następującymi elementami:
A jeśli zrobisz wszystko powyższe , przekonasz się, że odpowiedź Chipa nie tylko będzie idealna, ale stanie się optymalna.
źródło
Prosta odpowiedź brzmi:
Czy kod zależy od jakiejkolwiek funkcjonalności wbudowanej w konkretny motyw? Jeśli tak, dodaj motyw.
Czy chcesz, aby ten kod mógł być przenoszony między stronami i między motywami? Jeśli tak, zainstaluj wtyczkę.
Jeśli odpowiedź jest przecząca na oba powyższe pytania, wyobraź sobie stronę za 5 lat, kiedy nadejdzie czas na przeprojektowanie. Czy funkcja kodu, który piszesz, przetrwa następną aktualizację projektu? Jeśli tak, wstaw wtyczkę.
Ponadto, jeśli nie używasz motywów potomnych i planujesz zaktualizować motyw, sugerowałbym również użycie wtyczki.
źródło