Zarządzaj postami WordPress za pomocą PHP - Twórz i aktualizuj
1. Twórz posty i strony WordPress za pomocą PHP – samouczek 101 - 2. Aktualnie czytam: Zarządzaj postami WordPress za pomocą PHP – twórz i aktualizuj
Zgodnie z obietnicą, oto druga część mojego pierwszego postu, „Tworzenie postów i stron WordPress przy użyciu PHP – samouczek 101”. W tym artykule przyjrzymy się, jak możemy rozszerzyć podstawowe funkcje i teorię, które omówiłem w części 1, aby stworzyć solidną i ostatecznie niezawodną klasę opakowania PHP.
Jak zawsze współczuję tym z Was, którzy chcą po prostu zagłębić się w kod. Można go znaleźć w jednym z moich repozytoriów Github (wklejenie bezpośrednio do tego artykułu było trochę za długie!).
Co chcemy osiągnąć:
- W pełni funkcjonalny i niezawodny framework PHP klasy produkcyjnej.
- Być w stanie zarządzać nie tylko tworzeniem postów, ale także zarządzać i aktualizować istniejące posty.
- Być w stanie wyszukiwać posty i manipulować nimi według ich; ID; Tytuł lub ślimak.
Ten artykuł będzie podzielony na 2 sekcje: uwagi dotyczące użytkowania i przewodnik krok po kroku.
Bez zbędnych ceregieli, zaczynajmy!
Stosowanie
Przede wszystkim upewnij się, że dołączyłeś plik class.postcontroller.php z Githuba lub wkleiłeś zawartość tego pliku do swojego dokumentu PHP. Bez tego to się nie uda! Kodowi zawartemu w tym pliku przyjrzymy się w drugiej połowie tego samouczka.
Utwórz instancję klasy w następujący sposób;
$Poster = new PostController;Kontroler poczty działa w ten sposób; ustawiasz atrybuty postów za pomocą odpowiednich funkcji. Następnie utwórz lub zaktualizuj post. Aby zaktualizować post, musisz najpierw przeszukać i znaleźć taki, który chcesz zaktualizować. Brzmi wystarczająco prosto?
Ustaw atrybuty
Tytuł
To ustawia tytuł posta. Żaden kod HTML nie jest tu dozwolony i został usunięty.
$Poster->set_title( 'The Title' );Wpisz
Ta metoda ustawia typ postu na stronie. Wprowadź ślimak typu postu, np. „post” i „strona”. Obsługiwane są niestandardowe typy postów.
$Poster->set_type( 'page' );Treść
Ta metoda ustawia treść posta. HTML jest dozwolony.
$Poster->set_content( '<h1>This is my awesome new post!</h1>' );Autor
To ustawia autora posta. Wystarczy podać identyfikator nowego autora. To musi być liczba całkowita.
$Poster->set_author_id( 12 );Ślimak/„Imię”
To jest niestandardowa ścieżka adresu URL posta (jeśli jest włączona). Uważaj z tym, jakby ślimak był już w użyciu, może powodować pewne błędy. Uwzględniłem jednak weryfikację, aby za wszelką cenę uniknąć tego. Żadne znaki specjalne ani kod HTML nie są dozwolone.
$Poster->set_post_slug( "new_slug" );Szablon (tylko strony)
Ta metoda umożliwia ustawienie szablonu strony (musi to być strona). Jeśli zostanie zastosowany do innego typu postu, zostanie zignorowany, a do tablicy błędów zostanie dodany błąd. Format danych wejściowych będzie następujący: „php_template_name.php” i będzie unikalny dla każdego motywu.
$Poster->set_page_template( 'fullwidth_page.php' );Stan
Ta metoda ustawia stan wpisu. Dostępne opcje;
[ ‘draft’ | ‘publish’ | ‘pending’| ‘future’ | ‘private’ | custom registered status ]$Poster->set_post_state( "pending" );Tworzyć
Minimalnym wymogiem do utworzenia postu jest ustawienie tytułu. Możesz to zrobić za pomocą następującego kodu;
$Poster->set_title( "New Post" );Po ustawieniu tej opcji po prostu uruchom metodę create.
$Poster->create();Uwaga: ta metoda sprawdzi, czy istnieje inny post o tej samej nazwie (aby upewnić się, że nie tworzy duplikatów). Dlatego wymagany jest unikalny tytuł.
Szukaj
Zanim będziemy mogli zaktualizować istniejący post, musimy go najpierw znaleźć za pomocą funkcji wyszukiwania.
W tym celu 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łu;
$Poster->search( 'title' , 'DATA' );Możesz wyszukiwać według identyfikatora;
$Poster->search( 'id' , 'DATA' );Możesz także wyszukiwać według ślimaka;
$Poster->search( 'slug' , 'DATA' );Parametr data akceptuje ciąg znaków (w przypadku wyszukiwania według tytułu lub informacji) lub liczbę całkowitą (w przypadku wyszukiwania według identyfikatora). Jeśli nie można znaleźć wpisu lub strony o podanych parametrach, do tablicy $errors zostanie dodany błąd. Możesz wywołać i wyświetlić to za pomocą następującego kodu.
$error = $Poster->get_var( 'errors' );
$Poster->PrettyPrint( $error );Aktualizacja
Po znalezieniu wpisu możesz przypisać mu nowe atrybuty. Po ustawieniu atrybutów wystarczy wywołać metodę aktualizacji.
$Poster->update();Na przykład, jeśli chcesz zmienić tytuł postu 1 (ID=1), użyj następującego kodu.
$Poster->search( 'id', 1 );
$Poster->set_title( 'New Title' );
$Poster->update();W ten sposób można zaktualizować wszystkie atrybuty.
Pobieranie zmiennych
Aby pobrać zdefiniowane zmienne, możesz użyć metody get_vars.
$Poster->get_var( 'title' ); // Returns the title (if you have set it)
$Poster->get_var( 'type' ); // Returns the post type (if you have set it)
$Poster->get_var( 'content' ); // Returns the content (if you have set it)
$Poster->get_var( 'category' ); // Returns the category as an array (if set)
$Poster->get_var( 'template' ); // Returns the template (if you have set it)
$Poster->get_var( 'slug' ); // Returns the slug (if you have set it)
$Poster->get_var( 'auth_id' ); // Returns the author id (if you have set it)
$Poster->get_var( 'status' ); // Returns the post's status (if you have set it)
$Poster->get_var( 'errors' ); // Returns the errors array
/** AFTER YOU HAVE EITHER CREATED A POST OR SUCCESSFULLY SEARCHED FOR ONE YOU CAN USE THESE **/
// Returns the a PHP Object of the post. This can be used to check if the search method was successful
$Poster->get_var( 'current_post' );
// Returns the selected post's ID (integer).
$Poster->get_var( 'current_post_id' );
// Returns the URL permalink of the selected post
$Poster->get_var( 'current_post_permalink' );To jest to! Jeśli masz jakieś pytania dotyczące użytkowania, możesz je zadać w komentarzach tutaj. Jeśli znajdziesz błąd, powiedz mi o tym na Githubie.
Gotowy na drugą część?
Budowanie klasy: przewodnik krok po kroku
Teraz widzieliśmy, jak używać tej klasy, wróćmy do początku.
Nasza klasa będzie się nazywać PostController;
class PostController {
. . . class functions go here . . .
}Dla tych z Was, którzy nie są dobrze zaznajomieni z klasami PHP, klasa jest zdefiniowana jako obiekt zawierający zbiór współpracujących ze sobą funkcji i zmiennych. Sprawdź wprowadzenie do PHP.net, aby uzyskać więcej szczegółów na temat składni i teorii, których będziemy używać do tworzenia naszego frameworka. Następnym na naszej liście rzeczy do zrobienia jest zadeklarowanie wszystkich zmiennych, których będziemy używać.
// Variables for Post Data
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 = "publish";
// Variables for Post Updating
public $PC_current_post;
public $PC_current_post_id;
public $PC_current_post_permalink;
// Error Array
public $PC_errors;OK, podzielmy to na trzy bloki. Pierwszy blok będzie zawierał dane pocztowe, które określiłeś TY. Będą to dane, które posłużą do aktualizacji i utworzenia wpisu (kiedy do tego dojdziemy). Chociaż prawdopodobnie możesz się domyślić po nazwach zmiennych, oto lista danych, które chcemy móc przechowywać.
- Tytuł
- Typ (strona/post itp.)
- Treść
- Kategoria/kategorie
- Szablon strony
- Ślimak
- Identyfikator autora i
- Status wpisu (np. opublikowany/wersja robocza)
Drugi blok będzie zawierał rzeczywiste dane posta WordPress, które zwróci nasza wyszukiwarka (lub dane o utworzonym poście po jego utworzeniu). Zmienna „$PC_current_post” będzie zawierać obiekt całego wpisu. Zawiera wszystkie dane o poście, w tym (co ważne) dane wymienione powyżej. Podobnie zmienne Post ID i Permalink będą przechowywać te fragmenty danych o istniejącym poście.
Trzeci i ostatni blok zawiera tylko jedną zmienną: tablicę błędów. Jeśli w znanym punkcie „szczypania” wystąpi problem, do tablicy zostanie dodany komunikat o problemie w celach informacyjnych. Pamiętaj, że dodałem „PC_” tylko z dobrego przyzwyczajenia: nazwy zmiennych nigdy nie powinny być dwuznaczne. PC oznacza „PostController”. Jeśli to zmienisz, pamiętaj, aby zmienić także przedrostek w funkcji get_var().
Dobra, teraz, gdy już wszystko skonfigurowaliśmy, przejdźmy do naszej pierwszej funkcji.
// Creation functions
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
);
if ( ! 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[] = 'That page already exists. Try updating instead. Control passed to the update() function.';
return FALSE;
}
} else {
$this->errors[] = 'Title has not been set.';
return FALSE;
}
}Dla tych z Was, którzy przeczytali część 1 tej serii: Tworzenie postów i stron WordPress przy użyciu języka PHP – samouczek 101, ta funkcja będzie wyglądać znajomo. Jest to jedynie ukończona funkcja z tego samouczka, po dostosowaniu do nowej konfiguracji. Aby przeczytać wyjaśnienie tej konkretnej funkcji, polecam zapoznać się z częścią 1. Jedyną istotną różnicą w samej funkcji jest to, że zamiast dodawać ją do nagłówka WordPressa, jest ona uruchamiana natychmiast.
W ramach szybkiego przeglądu funkcja sprawdza, czy tytuł został ustawiony (jest to minimalne wymaganie do utworzenia posta). Następnie sprawdza istniejący post (według tytułu). Jeśli wpis zostanie znaleziony, do tablicy błędów dodawany jest komunikat, a kontrola przekazywana jest do funkcji update(). Jeśli nie zostanie znaleziony post o tym tytule, $post_data zostanie użyty do utworzenia nowego posta. Zmienna bieżącego postu (jak również pozostałe 2 zmienne danych) są aktualizowane, aby pomieścić dane nowego wpisu. Przydaje się to do sprawdzenia właśnie opublikowanego postu. Jeśli wystąpią problemy, do tablicy $errors dodawany jest komunikat.
Przepraszam, jeśli to było trochę szybkie: jeśli jesteś trochę zdezorientowany, polecam zapoznać się z moim 101 artykułem na ten temat.
Dla wszystkich, którzy nadal jesteście ze mną, kontynuujmy.
// SET POST'S TITLE
public function set_title( $name ) {
$this->PC_title = $name;
return $this->PC_title;
}
// SET POST'S TYPE
public function set_type( $type ) {
$this->PC_type = $type;
return $this->PC_type;
}
// SET POST'S CONTENT
public function set_content( $content ) {
$this->PC_content = $content;
return $this->PC_content;
}
// SET POST'S AUTHOR ID
public function set_author_id( $auth_id ) {
$this->PC_auth_id = $auth_id;
return $this->PC_auth_id;
}
// SET POST'S STATE
public function set_post_state( $content ) {
$this->PC_status = $content;
return $this->PC_status;
} Ten kawałek jest całkiem prosty. Funkcje create() i update() korzystają ze zmiennych lokalnych jako źródła danych. Dlatego potrzebujemy sposobu na ustawienie tych danych. Pierwszych 5 zmiennych jest ustawionych jak widać powyżej. „A co z pozostałymi trzema?”, słyszę, jak pytasz. Nie martw się, oto oni, ale zobaczysz, że istnieje trochę weryfikacji w celu zweryfikowania ich danych wejściowych (aby zmaksymalizować niezawodność).
// SET POST SLUG
public function set_post_slug( $slug ) {
$args = array('name' => $slug);
$posts_query = get_posts( $args );
if ( ! get_posts( $args ) && ! get_page_by_path( $this->PC_slug ) ) {
$this->PC_slug = $slug;
return $this->PC_slug;
} else {
$this->errors[] = 'Slug already in use.';
return FALSE;
}
}
// SET PAGE TEMPLATE
public function set_page_template( $content ) {
if ( $this->PC_type == 'page' ) {
$this->PC_template = $content;
return $this->PC_template;
} else {
$this->errors[] = 'You can only use template for pages.';
return FALSE;
}
}
// ADD CATEGORY IDs TO THE CATEGORIES ARRAY
public function add_category( $IDs ){
if ( is_array( $IDs ) ) {
foreach ( $IDs as $id ) {
if ( is_int( $id ) ) {
$this->PC_category[] = $id;
} else {
$this->errors[] = '<b>' .$id . '</b> is not a valid integer input.';
return FALSE;
}
}
} else {
$this->errors[] = 'Input specified in not a valid array.';
return FALSE;
}
}Te trzy ostatnie są nieco bardziej skomplikowane, ale bardzo ważne, aby uniknąć strasznych błędów.
set_post_slug()
Z funkcją set_post_slug() należy zachować bardzo ostrożność. Informacje o poście to zasadniczo ciąg znaków dodany na końcu podstawowego adresu URL w celu utworzenia indywidualnego adresu postu. Jest to również używane jako podstawowy identyfikator postu przez WordPress. Przykład. Błąd tego posta to „manage-wordpress-posts-php-create-update”. Jest on dodawany 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, na jakie napotkasz, jeśli więcej niż jeden post będzie miał ten sam błąd (a tym samym adres URL). To naprawdę paskudny bałagan, którego najlepiej unikać, jeśli to w ogóle możliwe.
Post Slug MUSI być WYJĄTKOWY
To jest powód walidacji. Dzieje się tak, że funkcja wyszukuje posty z określonym ślimakiem. Jeśli nie zostanie znaleziony żaden ORAZ, nie ma stron z tą ścieżką (w zasadzie to samo co ślimak w tym kontekście), to świetnie! Ustaw zmienną. Jeżeli nie, do tablicy $errors dodawany jest błąd, a zmienna nie jest ustawiona (funkcja zwraca wartość logiczną FALSE).
set_page_template() i dodaj_kategorię()
Funkcja set_page_template() przypisuje szablon strony (w postaci my_page_template.php) do Strony i tylko strony. Sprawdzanie poprawności polega po prostu na sprawdzeniu, czy typ postu został ustawiony na „strona”. Jeśli to prawda, zapisz dane. Jeśli nie, nie przejmuj się.
Funkcja add_category() umożliwia dodanie tablicy liczb całkowitych do kategorii posta (musi nadal znajdować się w tablicy, nawet jeśli dodana zostanie tylko 1 liczba). Liczby całkowite reprezentują identyfikatory kategorii. Walidacja po prostu przechodzi przez określoną tablicę, sprawdzając, czy każda komórka ma wartość całkowitą. Jeśli komórka ma wartość całkowitą, jest ona dodawana do tablicy kategorii głównych. Jeżeli nie, to jest ignorowane i do tablicy error dodawany jest błąd. Genialny! Teraz możemy przypisać wszystkie potrzebne zmienne.
Badawczy
Na początku tego samouczka powiedzieliśmy, że chcemy stworzyć system, który będzie miał możliwość aktualizacji istniejących postów WordPress. Aby było to możliwe, musimy najpierw znaleźć post, który chcemy edytować. W tym celu użyjemy funkcji search().
// Search for Post function
public function search( $by, $data ) {
switch ( $by ) {
// SEARCH FOR POST USING IT'S 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[] = 'No post found with that ID.';
return FALSE;
}
break;
case 'title' :
$post = get_page_by_title( $data );
if ( ! $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[] = 'No post found with that title.';
return FALSE;
}
break;
// SEARCH FOR POST USING IT'S SLUG
case 'slug' :
$args = array(
'name' => $data,
'max_num_posts' => 1
);
$posts_query = get_posts( $args );
if ( $posts_query ) {
$id = $posts_query[0]->ID;
} else {
$this->errors[] = 'No post found with that slug.';
}
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[] = 'No post found with that slug.';
return FALSE;
}
break;
default:
$this->errors[] = 'No post found.';
return FALSE;
break;
}
}To jest funkcja szukaj(). Używam instrukcji PHP Switch (innej formy instrukcji IF, która w tym przypadku będzie bardziej wydajna niż wielokrotne zagnieżdżone instrukcje If. Dowiedz się więcej o Switch w podręczniku PHP.net search() funkcja przyjmuje 2 parametry;
1. Wartość „Wyszukaj według”
2. Dane do wyszukiwania
Z powyższego kodu wynika, że dostępne są 3 opcje „Szukaj według”; „id”, „tytuł” i „ślimak”. Przyjrzyjmy się każdemu nieco bliżej.
Wyszukaj według identyfikatora
Jest to najprostsza metoda wyszukiwania i wymaga jedynie znajomości całkowitego identyfikatora wpisu. Jeśli podane dane są liczbą całkowitą, to funkcja wyśle zapytanie do Twojej bazy WordPress (za pomocą wbudowanej funkcji get_post()). Jeśli istnieje post z tą liczbą całkowitą, obiekt postu zostanie zwrócony i zapisany w zmiennej PC_current_post (jak również przechowywany jest identyfikator i łącze bezpośrednie). Prosty!
Szukaj według tytułu
Myślę, że nie trzeba tego specjalnie wyjaśniać: to prawie to samo, co wyszukiwanie według identyfikatora, ale zamiast tego wyszukuje post według jego tytułu. Jeśli masz posty/strony o tej samej nazwie (coś, czego nie polecam), zostanie wybrany post z najmniejszym identyfikatorem. Jeśli wiesz, że masz posty o tej samej nazwie, nie używaj tej metody, aby uniknąć nieporozumień. Uwaga: zobaczysz ten kod;
$post = get_page_by_title( $data );
if ( ! $post ) {
$post = get_page_by_title( $data, OBJECT, 'post' );
}Powodem, dla którego musimy to zrobić, jest to, że chociaż funkcja get_page_by_title() może zwracać dane zarówno dla postów, jak i stron, zwróci tylko strony, chyba że trzeci parametr zostanie określony jako „post”.
Nie chcę stwierdzać oczywistości, ale pamiętaj, że jeśli szukasz według tytułu i jednocześnie zmieniasz tytuł, kod będzie mógł zostać uruchomiony tylko raz (za pierwszym razem). Następnie zwróci błąd 404 Not Found.
Szukaj według Sluga
To dobra i niezawodna metoda wyszukiwania postów. Nie powinno być żadnych dwuznaczności, ponieważ, jak powiedziałem wcześniej, ślimak musi być unikalny. Sprawdź sekcję SET_POST_SLUG(), jeśli nie wiesz, co mam na myśli, mówiąc „ślimak”. Aby to zrobić, wystarczyło uruchomić zapytanie dotyczące postów WordPress, aby znaleźć posty z konkretnym ślimakiem. Możemy pobrać identyfikator z tej metody i ustawić bieżące zmienne postu w taki sam sposób, jak pozostałe 2 metody. Podobnie jak wyszukiwanie według tytułu, jednoczesne wyszukiwanie i zmienianie ślimaka będzie powodować problemy. Strzec się!
Aktualizuj i zarządzaj
No właśnie! Teraz, gdy wyszukiwanie zostało już zakończone, możemy przejść do właściwej funkcji update().
// Update Post
public function update(){
if ( isset($this->PC_current_post_id ) ) {
// Declare ID of Post to be updated
$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);
}
if ( ! 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 którykolwiek z 8 parametrów postu został ustawiony. Jeśli tak, tworzy i wypełnia tablicę zgodną z funkcją wp_update_post(). Działa wp_update_post() i hej, presto! Dobra robota. Dla wydajności dodamy proste sprawdzenie przed przypisaniem każdej zmiennej. Jest aktualizowany tylko wtedy, gdy uległ zmianie. Chociaż jestem trochę stronniczy, muszę przyznać, że to piękny kod!
Ustawione wartości są porównywane z wartościami zwracanymi przez sam WordPress. Wymagane jest wówczas jedynie proste porównanie. Zauważysz, że instrukcje IF szablonu i ślimaka mają nieco większą weryfikację niż inne. Chociaż uwzględniliśmy już weryfikację w celu odfiltrowania błędów, podwójne sprawdzenie nie zaszkodzi! Sprawdzanie szablonu strony (sprawdza, czy typ postu jest ustawiony na stronę) polega po prostu na tym, że próba ustawienia szablonu strony dla artykułu innego niż post jest moim błędem. Przepraszam za przesadę! Z drugiej strony kontrola ślimaka jest ważna! NAPRAWDĘ nie chcesz mieć konfliktów ślimakowych. W tym przypadku nie ma czegoś takiego jak przesada. To właściwie tyle, jeśli chodzi o funkcję update(). Wreszcie mamy kilka przydatnych funkcji ogólnych.
Dodatkowe funkcje
Teraz, gdy większość zajęć została już napisana, zawsze dobrym pomysłem jest dodanie kilku przydatnych i oszczędzających czas funkcji. Spójrz;
// General functions
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_'.$name;
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 'Use the PrettyPrint function to return the contents of this Object. E.g;<pre>$my_post->PrettyPrintAll();</pre>';
}
public function PrettyPrint($data) {
echo "<pre>";
print_r( $data );
echo "</pre>";
}
public function PrettyPrintAll() {
echo "<pre>";
print_r( $this );
echo "</pre>";
}Szybkie wyjaśnienia;
- get_content() : ta funkcja zwraca treść postu, którego szukałeś (jest ona dostarczana przez WordPress, a nie ustawiana przez Ciebie). To nie akceptuje żadnych parametrów.
- get_var('var_name' ): czasami ustawienie dużej ilości danych może być mylące. Akceptuje to jeden parametr: ciąg żądanej nazwy zmiennej. Oto lista dostępnych „nazwa_zmiennej”;
- „tytuł” – ustawiony tytuł posta.
- „typ” – ustawiony typ postu.
- „treść” – ustawiona przez Ciebie treść.
- „kategoria” – ustawione kategorie (tablica zwraca).
- „szablon” – ustawiony szablon strony.
- „ślimak” – ustawiony Ślimak.
- „auth_id” – ustawiony identyfikator autora.
- „status” – ustawiony status postu.
- „current_post” – Obiekt WP Post zwrócony po wyszukiwaniu.
- „current_post_id” – identyfikator wpisu WP zwrócony po wyszukiwaniu.
- „current_post_permalink” – bezpośredni link do WP Post wrócił po przeszukaniu.
- „błędy” – tablica błędów (bardzo przydatna).
- unset_all(): brak parametrów. Jedna praca. Usuwa wszystkie dane przechowywane w instancji klasy. Strzec się.
- __toString(): To działanie jest uruchamiane, gdy drukowana jest instancja samej klasy. Wydrukowano komunikat o błędzie. Użyj Użyj PrettyPrintAll()
// Start new class
$Poster = new PostController();
// Echoes error message
echo $Poster;- PrettyPrint(): jest to po prostu pomocna funkcja, która ładnie wyświetla obiekty i tablice w tagach „pre”. Przyjmuje jeden parametr: dane, które mają zostać „PrettyPrinted”.
- PrettyPrintAll(): Działa tak samo, jak PrettyPrint(), z tą różnicą, że „PrettyPrints” powoduje wyświetlenie całej instancji klasy (łącznie ze wszystkimi zmiennymi).
I to jest okład!
Dziękuję za przeczytanie mojego artykułu: mam nadzieję, że okazał się on przydatny i pouczający!
Najnowszą wersję klasy PostController można znaleźć na Githubie: PostController. Jeśli podobał Ci się ten samouczek, udostępnij! (Wzmianka również byłaby nie na miejscu: @harribellthomas ? ). Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy poniżej.

