Kiedy programiści mówią o podmiotach, zwykle mówią o koncepcji lub czymś, co istnieje w systemie. Czasami jest to klasa, czasami biblioteka lub zależność, a może to być coś w rodzaju typów postów WordPress.
Jeśli WordPress ma być traktowany jako podstawa aplikacji (w przeciwieństwie do frameworka), ważne jest, aby myśleć o pewnych funkcjach w sposób, który można traktować jako byty. W powyższym przykładzie typ posta jest właśnie taki.
Kiedy wprowadzono niestandardowe typy postów, dało nam to możliwość wprowadzenia do aplikacji czegoś innego niż strony i posty. Teraz możemy zaimplementować dowolną koncepcję – np. wydarzenie – i potraktować ją jako osobną całość w systemie.
Ale kiedy wszystko jest powiedziane i zrobione, wszystko jest zapisywane w tabeli postów. I to jest w porządku, ponieważ tworzenie oprogramowania polega na abstrakcji. Wdrażając typy postów WordPress, wdrażamy abstrakcję na szczycie idei postów.
Typy postów WordPress
W ostatnim poście przeszedłem przez proces tworzenia użytkownika, który ostatecznie będzie powiązany z jakimś podmiotem w aplikacji WordPress.
- Być może jest autorem postu,
- Być może jest sprzedawcą produktu,
- Być może jest narratorem opowieści,
- Albo cokolwiek innego możesz sobie wyobrazić.
Możliwości są nieskończone. Zanim jednak porozmawiamy o tym, jak utworzyć powiązanie między dwiema encjami – to znaczy użytkownikiem i typem posta WordPress – musimy porozmawiać o tym, jak programowo zaimplementować encję lub niestandardowy typ posta.
Istnieje wiele dokumentacji na ten temat i dostępnych jest wiele samouczków na ten temat, więc nie będę omawiał tego tematu. Zamiast tego postaram się, aby było to jak najprostsze. Pamiętaj, że celem całej serii jest ostateczne dotarcie do punktu, w którym kojarzymy byty za pomocą metadanych.
Ale zanim to zrobimy, musimy stworzyć byty. Tak więc mamy użytkownika, więc zróbmy to.
W naszym przykładzie załóżmy, że użytkownik, którego utworzyliśmy w poprzednim poście, Meghan, jest autorem książki. A w instalacji WordPress zarządzanej przez kogoś innego istnieje niestandardowy typ postu dla książek, z których każdy ma kilka atrybutów:
- tytuł,
- opis,
- Data publikacji,
- numer ISBN,
- liczba sprzedanych egzemplarzy początkowych,
- gdzie można go kupić,
- i tak dalej.
Możesz dodać więcej lub mniej do swojej implementacji. Być może zajmujesz się sprzedażą e-booków, a adres URL książki do zakupu jest jednym z atrybutów. W każdym razie masz pomysł.
Mając to na uwadze, możemy programowo zaimplementować prosty niestandardowy typ postu dla „książek".
Wdrażanie typu postu
A to wygląda tak :
<?php
add_action( 'init', 'acme_create_book_post_type' );
/**
* Creates a new custom post type called 'Book' using the smallest number of arguments
* to prepare the post type.
*/
function acme_create_book_post_type() {
$args = array(
'labels' => array(
'name' => 'Books',
'singular_name' => 'Book',
),
'public' => true,
);
register_post_type( 'acme_book', $args );
}
Jeśli przeczytasz dokumentację dotyczącą tworzenia niestandardowych typów postów, nie ma w tym nic nienormalnego. Powinno wyglądać dokładnie tak, jak byś się spodziewał.
To, gdzie tworzysz, zależy od charakteru Twojego projektu. Jest wiele osób, które będą argumentować, że jest we wtyczce lub jest zapiekany w motywie. To nie jest miejsce na debatę. Wystarczy powiedzieć, że dla moich celów zakładam, że jest to część tej samej wtyczki z poprzedniego samouczka.
Co więcej, nie mam na myśli niestandardowych taksonomii, komentarzy ani żadnego innego niestandardowego typu danych, który można powiązać z niestandardowym typem posta.
Następnie przyjrzymy się, jak to wygląda w obszarze administracyjnym WordPressa, a także jak to wygląda w bazie danych.
Spójrz za zasłonę
Po pierwsze, oto jak to wygląda (lub powinno wyglądać) w obszarze administracyjnym WordPressa:
A jeśli spojrzysz na bazę danych po utworzeniu wpisu, zobaczysz coś takiego:
Oczywiście ograniczyłem rekordy zwracane w interfejsie bazy danych, filtrując wyniki, aby ułatwić śledzenie zrzutu ekranu.
O książkach
I to jest to, naprawdę. To znaczy, na najbardziej podstawowym poziomie, w ten sposób tworzysz niestandardowy typ postu w WordPressie. Wiem, że to nic nowego, ale gdybym mógł nieco mocniej uzasadnić taki post, zawierałby następujące dwa punkty.
1 Chodzi o abstrakcje
Jeśli chcesz zająć się tworzeniem aplikacji internetowych za pomocą WordPress, ważne jest, aby przestać myśleć o rzeczach w kategoriach tradycyjnych, takich jak posty, strony, komentarze i kategorie, i zacząć myśleć o nich jako o bardziej ogólnych abstrakcjach.
Podmioty, jak wspomniano wcześniej w artykule. Kiedy to zrobisz, nastąpi zmiana w modelu mentalnym, który napędza twoją zdolność do przemyślenia i wdrożenia rozwiązania.
2 Chodzi o relacje
Chociaż często myślimy o rzeczach w ich poszczególnych częściach, takich jak posty i strony, nieodłącznie wiemy, że posty mogą zawierać komentarze, komentarze mogą zawierać odpowiedzi, strony mogą mieć szablony i tak dalej.
Pomiędzy wszystkimi tymi indywidualnymi rzeczami, które są częścią systemu, istnieją relacje. A kiedy zaczynasz myśleć o związkach jako o czymś, co pozwala nam robić więcej, zaczynasz dostrzegać, jak potężne może być coś. Całość „całość jest większa niż suma jej części”.
Kiedy więc masz już na swoim miejscu poszczególne byty i kiedy zaczynasz widzieć, jak mogą się one ze sobą odnosić, robisz krok w tworzeniu czegoś, co rozwiązuje nieco bardziej złożony problem z pozornie prostych części.
I właśnie tam pojedziemy dalej.
A co z metadanymi?
Całym celem tej serii jest przejście przez to, jak stworzyć związek między podmiotami, prawda? W szczególności chcemy stworzyć powiązanie między użytkownikiem a postem, a dokładniej autorem i książką.
Podstawą do tego jest WordPress, i to właśnie w tym momencie w grę może wchodzić moc dodatkowych tabel i haków. W następnym poście opowiem o tym, jak utworzyć to powiązanie, o kierunkach, w których mogą iść powiązania i jak pracować z tymi danymi, jeśli, powiedzmy, użytkownik zostanie usunięty z aplikacji.
Posty z serii
- Stowarzyszenie metadanych WordPress: jak to zrobić
- Programowe tworzenie użytkowników WordPress
- Typy postów WordPress: abstrakcja dla podmiotów
- Stowarzyszenie metadanych WordPress: powiązane podmioty

