W artykule:
Zgodnie z obietnicą, oto druga część mojego pierwszego postu, „twórz posty i Strony WordPress za pomocą PHP-samouczek 101”. W tym artykule przyjrzymy się, w jaki sposób możemy rozszerzyć podstawowe funkcje i teorię omówiłam w części 1, aby stworzyć solidną i ostatecznie niezawodną klasę Wrapper PHP.
Jak zawsze, współczuję tym z Was, którzy po prostu chcą zanurzyć się prosto w kod. Możesz go znaleźć w jednym z moich repozytoriów na Githubie (było trochę za długo, aby wkleić go bezpośrednio do tego artykułu!).

Co chcemy osiągnąć:
- W pełni funkcjonalny i niezawodny framework PHP klasy produkcyjnej.
- Możesz zarządzać nie tylko tworzeniem postów, ale także zarządzać i aktualizować istniejące posty.
- Być w stanie wyszukiwać i manipulować postów przez ich; ID; tytuł lub ślimak.
Będą 2 sekcje tego artykułu: uwagi dotyczące użytkowania i przewodnik krok po kroku.
Bez zbędnych ceregieli, zaczynajmy!
Użycie
Przede wszystkim upewnij się, że masz włączone klasy.postcontroller.php Plik z Github lub wklejono zawartość tego pliku do dokumentu PHP. To nie zadziała bez niego! Przyjrzymy się kodowi w tym pliku w drugiej połowie tego samouczka.
Utwórz instancję klasy w następujący sposób;
$Poster = new PostController;
Kontroler Post działa w ten sposób; ustawiasz atrybuty post za pomocą odpowiednich funkcji. Następnie tworzysz lub aktualizujesz post. Aby zaktualizować post, musisz najpierw przeszukać i znaleźć go do aktualizacji. Brzmi prosto?
Ustaw Atrybuty
Tytuł
Ustawia to tytuł posta. HTML nie jest tu dozwolony i jest usuwany.
$Poster->set_title ('Tytuł');
Typ
Ta metoda ustawia typ post strony. Wprowadź ślimak typu post, np. „post” i „strona”. Obsługiwane są niestandardowe typy postów.
$Poster->set_type ('page');
Zawartość
Ta metoda ustawia zawartość posta. HTML jest dozwolony.
$Poster->set_content (' this is my awesome new post!
' );
Autor
To ustawia autora postu. Wystarczy podać identyfikator autora nowego autora. To musi być liczba całkowita.
$Poster->set_author_id( 12 );
Slug / 'Nazwa’
Jest to niestandardowa ścieżka url postu (jeśli jest włączona). Uważaj na to, jakby ślimak był już w użyciu, może to spowodować pewne błędy. Włączyłem walidację, aby spróbować tego uniknąć za wszelką cenę. Znaki specjalne i html nie są dozwolone.
$Poster->set_post_slug ("new_slug");
Szablon (Tylko Strony)
Ta metoda pozwala ustawić szablon strony (musi być stroną). Jeśli zostanie zastosowany do innego typu postu, zostanie zignorowany, a do tablicy błędów zostanie dodany błąd. Format wejścia to ’ php_template_name.php ’ i będzie unikalny dla każdego tematu.
$Poster->set_page_template ('fullwidth_page.php' );
Stan
Ta metoda ustawia stan posta. Dostępne opcje;
[„wersja robocza” | „Publikacja” | „oczekujące” | „przyszłe” | „prywatne” / Niestandardowy status zarejestrowany ]
$Poster->set_post_state ("pending");
Utwórz
Minimalnym warunkiem tworzenia postu jest posiadanie zestawu tytułów. Możesz to zrobić za pomocą następującego kodu;
$Poster->set_title ("nowy Post");
Po ustawieniu tej wartości po prostu uruchom metodę create.
$Poster - > create();
Uwaga: Metoda sprawdzi, czy istnieje inny post o tej samej nazwie (tylko po to, aby upewnić się, że nie tworzy duplikatów). Stąd unikalny tytuł jest wymagane.
Szukaj
Zanim będziemy mogli zaktualizować istniejący post, najpierw musimy go znaleźć za pomocą funkcji wyszukiwania.
Aby to zrobić, używamy metody wyszukiwania.
$Poster- > search ('SEARCH_BY',' DATA');
Ta metoda akceptuje 2 parametry, atrybut do wyszukiwania i dane do wyszukiwania.
Możesz wyszukiwać według tytuł;
$Poster - > search ('title',' DATA');
Możesz wyszukiwać według ID;
$Poster - > search ('id',' DATA');
I możesz wyszukiwać według ślimak;
$Poster - > search ('slug',' DATA');
Parametr data będzie przyjmował łańcuch znaków (w przypadku wyszukiwania title lub slug) lub liczbę całkowitą (w przypadku wyszukiwania ID). Jeśli nie można znaleźć postu lub strony o określonych parametrach, zostanie dodany błąd $ errors array. Możesz to wywołać i wyświetlić za pomocą następującego kodu.
$error = $Poster->get_var ('errors');
$Poster - > PrettyPrint ($error );
Aktualizacja
Po znalezieniu posta możesz mu przypisać nowe atrybuty. Po ustawieniu atrybutów wystarczy wywołać metodę update.
$Poster - > update();
Na przykład, jeśli chcesz zmienić tytuł posta 1 (ID = 1), użyjesz następującego kodu.
$Poster - > search ('id', 1 );
$Poster->set_title ('nowy tytuł');
$Poster - > update();
Wszystkie atrybuty mogą być aktualizowane w ten sposób.
Pobieranie Zmiennych
Do pobrania zdefiniowanych zmiennych można użyć metody get_vars.
$Poster->get_var( 'title'); / / zwraca tytuł (jeśli go Ustawiłeś)
$Poster->get_var( 'type'); / / zwraca typ posta (jeśli go Ustawiłeś)
$Poster->get_var( 'content'); / / zwraca zawartość (jeśli ją Ustawiłeś)
$Poster->get_var( 'category'); / / zwraca kategorię jako tablicę (jeśli jest ustawiona)
$Poster->get_var( 'template'); / / zwraca szablon (jeśli go Ustawiłeś)
$Poster->get_var( 'slug'); / / zwraca slug (jeśli go Ustawiłeś)
$Poster->get_var( 'auth_id'); / / zwraca identyfikator autora (jeśli go Ustawiłeś)
$Poster->get_var( 'status'); / / zwraca status posta (jeśli go Ustawiłeś)
$Poster->get_var( 'errors'); / / zwraca tablicę błędów
/ * * PO UTWORZENIU POSTU LUB POMYŚLNYM WYSZUKIWANIU MOŻESZ UŻYĆ TYCH **/
// Zwraca obiekt A PHP posta. Może to być użyte do sprawdzenia, czy metoda wyszukiwania powiodła się
$Poster->get_var ('current_post' );
// Zwraca ID wybranego posta (integer).
$Poster - > get_var ('current_post_id' );
// Zwraca link URL wybranego postu
$Poster->get_var ('current_post_permalink' );
To jest to! Jeśli masz jakieś pytania dotyczące użytkowania, możesz zadać mi je w komentarzach tutaj. Jeśli znajdziesz błąd, opowiedz mi o nim na Githubie.
Gotowy na drugą część?
Budowanie klasy: przewodnik krok po kroku
Teraz widzieliśmy, jak korzystać z klasy, wróćmy do początku.
Nasza klasa będzie nazywana PostController;
class PostController {
. . . funkcje klasowe idą tutaj . . .
}
Dla tych z Was, którzy nie są dobrze zaznajomieni z klasami PHP, klasa jest zdefiniowana jako obiekt, który zawiera zbiór funkcji i zmiennych, które współpracują ze sobą. Sprawdź PHP.net wprowadzenie więcej szczegółów na temat składni i teorii, których będziemy używać do tworzenia naszego frameworka. Następnie na naszej liście zadań jest zadeklarowanie wszystkich zmiennych, których będziemy używać.
// Zmienne dla danych Post
public $PC_title;
public $ PC_type;
public $ PC_content;
public $ PC_category;
public $ PC_template;
public $ PC_slug;
public $PC_auth_id;
public $PC_status = "publikuj";
// Zmienne do aktualizacji postów
public $ PC_current_post;
public $ PC_current_post_id;
public $ PC_current_post_permalink;
// Tablica Błędów
public $ PC_errors;
Podzielmy to na trzy bloki.Pierwszy blok będzie zawierał dane Post, które TY określiłem. Będą to dane, które zostaną wykorzystane do aktualizacji i utworzenia posta (kiedy do niego dojdziemy). Chociaż prawdopodobnie można odgadnąć po nazwach zmiennych, oto lista danych, które chcemy przechowywać.
- Tytuł
- Type (Page/Post etc.)
- Zawartość
- Kategoria / Kategorie
- Szablon Strony
- Ślimak
- ID autora oraz
- Status poczty (np. published/draft)
Drugi blok będzie zawierał rzeczywiste dane postu WordPress, które zwróci nasze zapytanie (lub dane o utworzonym poście po jego utworzeniu). Zmienna '$ PC_current_post ’ będzie zawierać obiekt całego postu. Przechowuje to wszystkie dane o poście, w tym (co ważne) dane wymienione powyżej. Podobnie, zmienne Post ID i Permalink przechowują te fragmenty danych o istniejącym poście.
Trzeci i ostatni blok ma tylko jedną zmienną: tablicę błędów. Jeśli problem zostanie napotkany w znanym punkcie „szczypania”, to wiadomość o problemie zostanie dodana do tej tablicy w celach informacyjnych. Należy pamiętać, że zawarłem „PC_” z dobrego nawyku: nazwy zmiennych nigdy nie powinny być niejednoznaczne. PC oznacza 'PostController’. Jeśli to zmienisz, pamiętaj o zmianie prefiksu w funkcji get_var ().
Teraz, gdy już wszystko ustawiliśmy, przejdźmy do naszej pierwszej funkcji.
// Funkcje tworzenia
public function create () {
if (isset ($this->PC_title)) {
if ($this - >PC_type = = 'page') {
$post = get_page_by_title ($this - >PC_title, 'OBJECT', $this - > PC_type );
} else {
$post = get_page_by_title ($this - >PC_title, 'OBJECT', $this - > PC_type );
}
$post_data = array(
'post_title' = > wp_strip_all_tags ($this->PC_title),
'post_name' = > $this - > PC_slug,
'post_content' = > $this - > PC_content,
'post_status' = > $this - > PC_status,
'post_type' = > $this - > PC_type,
'post_author' = > $this - > PC_auth_id,
'post_category' = > $this - > PC_category,
'page_template' = > $this - > PC_template
);
jeśli ( ! isset ($post)) {
$this - > PC_current_post_id = wp_insert_post ($post_data, $error_obj);
$this->PC_current_post = get_post ((integer ) $this->PC_current_post_id, 'OBJECT' );
$this->PC_current_post_permalink = get_permalink( ( integer ) $this->PC_current_post_id );
return $error_obj;
} else {
$this - > update();
$this - > errors [] = ' ta strona już istnieje. Zamiast tego spróbuj zaktualizować. Kontrola przekazywana do funkcji update ().';
return FALSE;
}
} else {
$this - > errors [] = ' Tytuł nie został ustawiony.';
return FALSE;
}
}
Dla tych z Was, którzy przeczytali Część 1 tej serii: twórz posty i Strony WordPress za pomocą samouczka PHP – A 101, ta funkcja będzie wyglądać znajomo. Jest to po prostu skończona funkcja z tego samouczka po dostosowaniu do tej nowej konfiguracji. Aby przeczytać wyjaśnienie tej konkretnej funkcji, polecam sprawdzenie części 1. Jedyną istotną różnicą w stosunku do samej funkcji jest to, że zamiast dodawania funkcji do głowicy WordPress, jest ona uruchamiana natychmiast.
Jako szybkie przejście, funkcja sprawdza, czy tytuł został ustawiony (jest to minimalny wymóg tworzenia postów). Następnie sprawdza istniejący post (według tytułu). Jeśli post zostanie znaleziony, wiadomość jest dodawana do tablicy błędów i kontrola jest przekazywana do update() funkcja. Jeśli post nie zostanie znaleziony z tym tytułem, to $post_data służy do tworzenia nowego posta. Bieżąca zmienna Post (jak również pozostałe 2 zmienne danych) są aktualizowane w celu przechowywania danych nowego posta. Jest to dobre do sprawdzenia posta, który właśnie zrobiłeś. Jeśli występują problemy, to wiadomość jest dodawana do $ errors array.
Przepraszam, jeśli to było trochę szybko: jeśli jesteś trochę zdezorientowany, polecam sprawdzić mój artykuł 101 na ten temat.
Dla wszystkich, którzy wciąż są ze mną, kontynuujmy.
// USTAW TYTUŁ POSTA
Public function set_title ($name ) {
$this - > PC_title = $name;
return $this - > PC_title;
}
// USTAW TYP POSTA
Public function set_type ($type ) {
$this - > PC_type = $type;
return $this - > PC_type;
}
// USTAW ZAWARTOŚĆ POSTA
Public function set_content ($content ) {
$this - > PC_content = $content;
return $this - > PC_content;
}
// USTAW ID AUTORA POSTA
Public function set_author_id ($auth_id ) {
$this - > PC_auth_id = $auth_id;
return $this - > PC_auth_id;
}
// USTAW STAN POSTA
Public function set_post_state ($content ) {
$this - > PC_status = $ content;
return $this - > PC_status;
}
Ten kawałek jest dość prosty. Na create() oraz update() obie funkcje używają zmiennych lokalnych jako źródła swoich danych. Dlatego potrzebujemy sposobu na ustawienie tych danych. Pierwsze 5 zmiennych jest ustawionych jak widać powyżej. A co z pozostałymi trzema?Słyszałem, że pytasz. Nie martw się, tutaj są, ale zobaczysz, że jest trochę walidacji, aby zweryfikować ich dane wejściowe (aby zmaksymalizować niezawodność).
// SET POST SLUG
Public function set_post_slug ($slug ) {
$args = array ('name' = > $slug);
$posts_query = get_posts ($args );
jeśli ( ! get_posts ($args ) && ! get_page_by_path ($this->PC_slug)) {
$this - > PC_slug = $slug;
return $this - > PC_slug;
} else {
$this - > errors [] = ' Slug już w użyciu.';
return FALSE;
}
}
// USTAW SZABLON STRONY
Public function set_page_template ($content ) {
if ($this - >PC_type = = 'page') {
$this - > PC_template = $ content;
return $this - > PC_template;
} else {
$this - > errors [] = ' szablon można używać tylko dla stron.';
return FALSE;
}
}
// Dodaj identyfikatory kategorii do tablicy kategorii
public function add_category ($IDs ){
if (is_array ($IDs)) {
foreach ($IDs as $id ) {
if (is_int ($id)) {
$this - > PC_category [] = $id;
} else {
$this - > errors [] = ' '.$id . ' nie jest poprawnym wejściem integer.';
return FALSE;
}
}
} else {
$this - > errors [] = ' Dane wejściowe podane w nieprawidłowej tablicy.';
return FALSE;
}
}
Te trzy ostatnie są nieco bardziej skomplikowane, ale bardzo ważne, aby uniknąć strasznych błędów.
set_post_slug()
Na set_post_slug() function is something you need to be bardzo ostrożnie z. Slug post jest w zasadzie ciągiem dodanym na końcu podstawowego adresu URL, aby utworzyć indywidualny adres posta. Jest to również używany jako podstawowy identyfikator postu przez WordPress. Np. Ten post slug jest ’manage-WordPress-posts-php-create-update’. Jest to dodawane na końcu podstawowego adresu URL, http://wpexplorer.com/, aby utworzyć unikalny adres URL tego artykułu: http://www.wpexplorer.com/manage-wordpress-posts-php-create-update/. Jestem pewien, że możesz sobie wyobrazić problemy, które napotkasz, gdyby więcej niż jeden post miał ten sam ślimak (a tym samym adres URL). Jest to naprawdę paskudny bałagan najlepiej unikać, jeśli w ogóle możliwe.
Słupek musi być unikalny
To jest powód walidacji. Dzieje się tak, że funkcja wyszukuje posty z określonym ślimakiem. Jeśli nie znaleziono Oraz nie ma stron z tym jako ścieżką (zasadniczo taka sama jak ślimak w tym kontekście), to świetnie! Ustaw zmienną. Jeśli nie, błąd zostanie dodany do $ errors tablica i zmienna nie jest ustawiona (funkcja zwraca wartość logiczną FALSE).
set_page_template () & add_category ()
set_page_template() przypisuje szablon strony (w postaci my_page_template.php) do a Strona i tylko stronę. Walidacja tutaj po prostu sprawdza, czy typ post został ustawiony na 'page’. Jeśli to prawda, przechowuj dane. Jeśli nie, nie kłopocz się.
add_category() pozwala na dodanie tablicy liczb całkowitych do kategorii posta (nadal musi być w tablicy, nawet jeśli dodaje tylko 1 liczbę). Liczby całkowite reprezentują identyfikatory kategorii. Walidacja po prostu przechodzi przez podaną tablicę, sprawdzając, czy każda komórka ma wartość całkowitą. Jeśli komórka ma wartość całkowitą, jest dodawana do tablicy kategorii głównych. Jeżeli nie, wtedy jest ignorowany i do tablicy errors zostanie dodany błąd. Genialne! Teraz możemy przypisać wszystkie potrzebne zmienne.
Wyszukiwanie
Na początku tego samouczka powiedzieliśmy, że chcemy stworzyć system, który ma możliwość aktualizacji istniejących postów WordPress. Aby było to możliwe, najpierw musimy znaleźć post, który chcemy edytować. W tym celu użyjemy search() funkcja.
// SZUKAJ funkcji Post
public function search ($by, $data ) {
switch ($by) {
// SZUKAJ POSTA UŻYWAJĄC JEGO ID
case 'id' :
if ( is_integer( $data ) && get_post( ( integer ) $data ) != = NULL) {
$this - > PC_current_post = get_post ((integer ) $data, 'OBJECT' );
$this - > PC_current_post_id = (integer ) $data;
$this - > PC_current_post_permalink = get_permalink ((integer) $data );
return TRUE;
} else {
$this - > errors [] = ' nie znaleziono posta o tym ID.';
return FALSE;
}
break;
case 'title' :
$post = get_page_by_title ($data );
jeśli ( ! $post) {
$post = get_page_by_title ($data, OBJECT, 'post' );
}
$id = $post - > ID;
if ( is_integer($id) && get_post( (integer)$id) != = NULL) {
$this - > PC_current_post = get_post ((integer)$id, 'OBJECT' );
$this - > PC_current_post_id = (integer) $id;
$this - > PC_current_post_permalink = get_permalink ((integer) $id );
return TRUE;
} else {
$this - > errors [] = ' nie znaleziono postu z tym tytułem.';
return FALSE;
}
break;
// SEARCH FOR POST USING IT ' S SLUG
case 'slug' :
$args = array(
'Nazwa' = > $dane,
'max_num_posts' = > 1
);
$posts_query = get_posts ($args );
if ($posts_query) {
$id = $posts_query[0]->ID;
} else {
$this - > errors [] = ' nie znaleziono postu z tym ślimakiem.';
}
if ( is_integer($id) && get_post( (integer)$id) != = NULL) {
$this - > PC_current_post = get_post ((integer)$id, 'OBJECT' );
$this - > PC_current_post_id = (integer)$id;
$this - > PC_current_post_permalink = get_permalink ((integer)$id);
return TRUE;
} else {
$this - > errors [] = ' nie znaleziono postu z tym ślimakiem.';
return FALSE;
}
break;
default:
$this - > errors [] = ' nie znaleziono posta.';
return FALSE;
break;
}
}
To jest search() funkcja. Używam instrukcji PHP Switch (inna forma instrukcji IF, która w tym przypadku będzie bardziej wydajna niż wiele zagnieżdżonych if. Dowiedz się więcej o Switch on the PHP.net Manual The search() funkcja akceptuje 2 parametry;
1. Wartość „Szukaj Według”
2. Dane do wyszukiwania
Z powyższego kodu widać, że istnieją 3 opcje „Szukaj według”; „id”, „title” i „slug”. Przyjrzyjmy się każdemu nieco dokładniej.
Szukaj według ID
Jest to najprostsza metoda wyszukiwania i wymaga jedynie poznania identyfikatora integer posta. Jeśli podane dane są liczbą całkowitą, funkcja wyśle zapytanie do bazy danych WordPress (przy użyciu wbudowanej funkcji get_post ()). Jeśli istnieje post z tą liczbą całkowitą, wtedy obiekt post zostanie zwrócony i zapisany w zmiennej PC_current_post (jak również ID i permalink). Proste!
Szukaj według tytułu
Nie sądzę, że to naprawdę wymaga wiele wyjaśnienia: jest to prawie tak samo jak wyszukiwanie po identyfikatorze, ale zamiast tego wyszukuje post po tytule. Jeśli masz posty / strony o tej samej nazwie (coś co nie polecam) następnie post z najmniejszy identyfikator zostanie wybrany. Jeśli wiesz, że masz posty o tych samych nazwach, nie używaj tej metody, aby uniknąć nieporozumień. Uwaga: Zobaczysz ten kod;
$post = get_page_by_title ($data );
jeśli ( ! $post) {
$post = get_page_by_title ($data, OBJECT, 'post' );
}
Powodem, dla którego musimy to zrobić, jest to, że chociaż get_page_by_title() może zwracać dane zarówno dla postów, jak i stron, zwraca tylko strony, chyba że trzeci parametr jest określony jako 'post’.
Nie chcę stwierdzać oczywistości, ale zdaję sobie sprawę, że jeśli szukasz po tytule i zmieniasz tytuł w tym samym czasie, kod będzie mógł działać tylko raz (za pierwszym razem). Następnie zwróci błąd 404 Nie znaleziono.
Szukaj wg ślimaka
Jest to miła i niezawodna metoda znajdowania postów. Nie powinno być dwuznaczności, ponieważ, jak już wcześniej powiedziałem, ślimak musi być unikalny. Sprawdź SET_POST_SLUG() sekcja, jeśli nie jesteś pewien, co mam na myśli przez „ślimak”. Aby to zrobić, po prostu musieliśmy uruchomić zapytanie o posty WordPress, aby znaleźć posty z określonym ślimakiem. Możemy pobrać ID z tej metody i ustawić bieżące zmienne post w taki sam sposób jak pozostałe 2 metody. Podobnie jak wyszukiwanie po tytule, szukanie i zmiana ślimaka razem spowoduje problemy. Uważaj!
Aktualizuj i zarządzaj
Racja! Teraz, gdy wyszukiwanie jest na uboczu, możemy przejść do rzeczywistego update() funkcja.
// Update Post
public function update () {
if (isset ($this - >PC_current_post_id)) {
// Declare ID Posta do aktualizacji
$PC_post['ID'] = $this - >PC_current_post_id;
// Declare Content / Parameters of Post to be updated
if (isset ($this->PC_title ) && $this->PC_title != = $this - > PC_current_post - > post_title ) {
$PC_post['post_title'] = $this - >PC_title;
}
if (isset ($this->PC_type ) && $this->PC_type != = $this - > PC_current_post - > post_type ) {
$PC_post['post_type'] = $this - >PC_type;
}
if (isset ($this->PC_auth_id) && $this->PC_auth_id != = $this - > PC_current_post - > post_type ) {
$PC_post['post_author'] = $this - >PC_auth_id;
}
if (isset ($this->PC_status) & & $this - > PC_status != = $this - > PC_current_post - > post_status) {
$PC_post['post_status'] = $this - >PC_status;
}
if (isset ($this->PC_category) & & $this - > PC_category != = $this - > PC_current_post - > post_category ) {
$PC_post['post_category'] = $this - >PC_category;
}
if (isset ($this->PC_template )
&& $this - > PC_template != = $this - > PC_current_post- > page_template
&& ($PC_post['post_type'] == 'page' || $this->PC_current_post->post_type == 'page' )
) {
PC_post['page_template'] = $this - >PC_template;
}
if (isset ($this->PC_slug ) && $this->PC_slug != = $this - > PC_current_post - >post_name ) {
$args = array ('name' = > $this - > PC_slug);
}
jeśli ( ! get_posts ($args ) && !get_page_by_path ($this->PC_slug)) {
$PC_post['post_name'] = $this - >PC_slug;
} else {
$errors [] = 'SLUG Defined is not Unique';
}
if (isset ($this->PC_content) & & $this - > PC_content != = $this - > PC_status - > post_content) {
$PC_post['post_content'] = $this - >PC_content;
}
wp_update_post ($PC_post );
}
return ($errors );
}
Nie będę kłamać, ten kawałek jest naprawdę łatwy. Zasadniczo funkcja aktualizacji sprawdza, czy żaden z 8 parametrów post nie został ustawiony. Jeśli tak, to tworzy i wypełnia tablicę zgodną z wp_update_post(). Działa wp_update_post() i hej presto! Dobra robota. Dla efektywności dodamy proste sprawdzenie przed przypisaniem każdej zmiennej. Jest on aktualizowany tylko wtedy, gdy się zmienił. Chociaż jestem nieco stronniczy, muszę przyznać, że jest to piękny kod!
Ustawione wartości są porównywane z wartościami zwracanymi przez sam WordPress. W takim przypadku wymagane jest tylko proste porównanie. Zauważysz, że instrukcje template i SLUG IF mają nieco większą walidację niż pozostałe. Chociaż wprowadziliśmy już walidację, aby odfiltrować błędy, nie ma nic złego w podwójnym sprawdzaniu! Sprawdzanie szablonu strony (sprawdza, czy typ postu jest ustawiony na stronę) jest po prostu dlatego, że próba ustawienia szablonu strony dla nie-postu jest moim błędem. Przepraszam za przesadę! Z drugiej strony sprawdzanie ślimaków jest ważne! Ty Naprawdę. nie chcę mieć konfliktów ślimakowych. W tym przypadku nie ma czegoś takiego jak przesada. To prawie wszystko dla update(). Wreszcie, mamy kilka przydatnych funkcji ogólnych.
Dodatkowe Funkcje
Teraz, gdy większość klasy została napisana, zawsze dobrym pomysłem jest dodanie kilku przydatnych / oszczędzających czas funkcji. Zobacz też;
// Funkcje ogólne
public function get_content () {
if (isset ($this - > PC_current_post - >post_content)) {
return $this - > PC_current_post - > post_content;
}
}
public function get_var ($name ) {
$name = 'PC_'.$nazwa;
if (isset ($this->$name ) ) {
return $this - > $name;
}
}
public function unset_all () {
foreach(get_class_vars (get_class ($this)) as $name = > $default) {
$this - > $ name = $ default;
}
}
public function _ _ toString () {
return ' Użyj funkcji PrettyPrint, aby zwrócić zawartość tego obiektu. Np;$my_post->PrettyPrintAll();
';
}
Public function PrettyPrint ($data) {
echo "";
print_r ($data );
echo "
";
}
public function PrettyPrintAll () {
echo "";
print_r ($this );
echo "
";
}
Szybkie Wyjaśnienia;
- get_content() : Ta funkcja zwraca zawartość szukanego postu (jest to dostarczane przez WordPress, a nie ustawiane przez Ciebie). To nie akceptuje żadnych parametrów.
- get_var (’var_name’ ) : Czasami może to być mylące, gdy Ustawiłeś dużo danych. Przyjmuje jeden parametr: łańcuch żądanej nazwy zmiennej. Oto lista dostępnych 'var_name’;
- „tytuł” – Ustawiony tytuł postu.
- „Typ” – Typ postu, który ustawiłeś.
- „content” – Zawartość, którą ustawiłeś.
- „Kategoria” – Ustawione kategorie (zwraca tablicę).
- „template” – Ustawiony szablon strony.
- „slug” – Pocisk, który ustawiłeś.
- „auth_id” – Ustawiony identyfikator autora.
- „status” – Ustawiony Status poczty.
- ’current_post’ – Obiekt WP Post powrócił po przeszukiwaniu.
- „current_post_id” – Identyfikator WP Post powrócił po przeszukaniu.
- ’current_post_permalink’ – Permalink posta WP powrócił po przeszukaniu.
- „errors” – Tablica błędów (bardzo przydatna).
- unset_all() : Brak parametrów. Jedno zadanie. Usuwa wszystkie dane przechowywane w instancji klasy. Uważaj.
- __toString() : To jest to, co jest uruchamiane, gdy instancja samej klasy jest drukowana. Wyświetlono komunikat o błędzie. Użycie Użyj PrettyPrintAll()
// Rozpocznij nową klasę
$Poster = new PostController();
// Echoes komunikat o błędzie
echo $plakat;
- PrettyPrint() : Jest to po prostu pomocna funkcja, która ładnie wyświetla obiekty i tablice w tagach 'pre’. Pobiera jeden parametr: dane mają być „PrettyPrinted”.
- PrettyPrintAll() : To jest to samo co PrettyPrint (), z wyjątkiem 'PrettyPrints’ całej instancji klasy (łącznie ze wszystkimi zmiennymi).
I koniec!
Dziękuję za przeczytanie mojego artykułu: mam nadzieję, że znalazłeś to zarówno przydatne, jak i pouczające!
Możesz znaleźć najnowszą wersję klasy PostController na Github: PostController. Jeśli podobał Ci się ten samouczek, podziel się nim! (Wzmianka też byłaby daleko błędna: @ harribellthomas 😉 ). Jeśli masz jakieś pytania, zostaw je w komentarzach poniżej.