Chciałbym uzyskać opinie na temat najlepszych praktyk w tworzeniu wtyczek WordPress zapewniających integrację motywów.
Aby mieć sens, gdy zadaję to pytanie, zacznę od hipotetycznego przykładu interesującego mnie scenariusza. Wyobraź sobie, że tworzę wtyczkę o nazwie „Dyskografia”. Dyskografia rejestruje trzy niestandardowe typy postów: „Zespoły”, „Albumy” i „Utwory”. Wtyczka zapewnia również meta-skrzynki, które zawierają szczegółowe informacje o każdym typie postu, a także niestandardowe taksonomie do uporządkowania każdego typu postu. Te typy postów są powiązane razem z wtyczką Posts 2 Posts . W ramach administratora użytkownik może dodawać nowe pasma, które mogą być powiązane z albumami, które z kolei są powiązane ze ścieżkami, wszystkie, które będą miały wiele innych danych dodanych do nich za pośrednictwem meta-boxów i taksonomii.
Teraz nie chcę, aby ta wtyczka po prostu konfigurowała administratora, aby użytkownicy mogli wprowadzać te informacje; Chciałbym, aby zapewnił pewne domyślne wyświetlanie danych. Bardziej zaawansowany użytkownik / programista miałby dobrze, mając tylko tego administratora. Łatwo byłoby jej zdobyć te dane i wykorzystać je w motywie; jednak bez niektórych domyślnych widoków ta wtyczka byłaby bezużyteczna dla większości użytkowników. W tym przykładzie możesz wyświetlić coś podobnego (nawiasy pokazują sposoby wyświetlania informacji w kolejności hierarchii szablonów):
- Zespoły (single-prefix-band.php, single.php, index.php, shortcode)
- Albumy (single-prefix-album.php, single.php, index.php, shortcode)
- Utwory (single-prefix-track.php, single.php, index.php, shortcode)
- Lista pasm (template-band-list.php, page-band-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Lista albumów (template-album-list.php, page-album-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Oś czasu albumu (szablon-album-timeline.php, strona-album-timeline.php, strona- {id} .php, page.php, index.php, shortcode)
Ważne jest, aby istniała domyślna prezentacja dla tych typów postów, ponieważ domyślne pliki szablonów nie wyświetlałyby wszystkich informacji potrzebnych dla każdego z typów postów. Na przykład motyw Twenty Eleven domyślnie wyświetlałby tylko nazwę, kategorie, opis i datę publikacji albumu. Niezbyt przydatne w przypadku albumu. Chciałbym udostępnić pojedynczy szablon posta, który ściąga zespół, datę wydania, wytwórnię, wersje albumu, utwory itp. Jako programista wtyczek uważam, że byłoby to ważne. Wiem, że szablon nie zadziałałby dla każdego motywu, ale powinny istnieć pewne ustawienia domyślne, które można dodatkowo zintegrować z motywem użytkownika.
Znów jestem ciekawy, jak najlepiej poradzić sobie z tą sytuacją? Myślę, że możesz wykonać jedną z następujących czynności.
Skróty
Skróty można wykorzystać jako bardzo elastyczny i przyjazny dla użytkownika sposób, aby umożliwić programistom dodawanie zespołów, albumów, utworów, list zespołów itp. W dowolnym miejscu na stronie. Przydałoby się wyróżnianie pasm na określonych stronach lub tworzenie osobnych stron dla każdego pasma (niezbyt wydajne, ale niektórzy użytkownicy podchodzą do tego w ten sposób). Krótki kod wygenerowałby HTML, który byłby powiązany z dostarczonym plikiem CSS, który zapewniłby ładny domyślny widok pożądanych danych. Wszystko byłoby zawarte w plikach wtyczek i nic nie musiałoby być zrobione z tym motywem.
Pliki szablonów
Wtyczka może również być dostarczana z plikami szablonów. Pliki szablonów można oznaczyć i nadać im styl, aby uzyskać ładny widok domyślny. Możesz podać instrukcje dla użytkownika, aby przenieść pliki do folderu motywu, aby motyw znalazł odpowiednie szablony podczas przeglądania typów postów. Możesz nawet posunąć się tak daleko, jak udostępnienie interfejsu, który pozwala użytkownikowi przenosić pliki jednym kliknięciem (uwaga: nie aktywowałbym plików w folderze motywów użytkownika podczas aktywacji, ponieważ dodawanie plików do motywu bez inicjowania go jest złe) .
Możesz także użyć filtrów, aby wykorzystać te pliki bez przenoszenia ich z folderu wtyczki, utrzymując wszystko w spokoju. Widziałem używane do tego celu filtry „template_include” i „{$ type} _template”. W rzeczywistości możesz użyć szablonów z folderu motywów, a jeśli nie są obecne, możesz skorzystać z tych filtrów, aby uzyskać domyślne widoki.
Pytanie
Lubię wiedzieć, co inni uważają za najlepsze praktyki w takich sytuacjach, jeśli przedstawione pomysły są w jakikolwiek sposób problematyczne oraz wszelkie alternatywy, których nie uwzględniłem.
Dziękuję Ci!