Kelola Postingan WordPress dengan PHP - Buat dan Perbarui
1. Membuat Postingan dan Halaman WordPress Menggunakan PHP β Tutorial 101 - 2. Sedang Dibaca: Kelola Postingan WordPress dengan PHP β Buat dan Perbarui
Seperti yang dijanjikan, inilah bagian kedua dari postingan pertama saya, 'Membuat Postingan dan Halaman WordPress Menggunakan PHP β Tutorial 101'. Pada artikel ini kita akan melihat bagaimana kita dapat memperluas fungsi dasar dan teori yang saya bahas di Bagian 1 untuk membuat Kelas PHP Wrapper yang kuat dan pada akhirnya dapat diandalkan.
Seperti biasa, saya bersimpati dengan Anda yang hanya ingin langsung mendalami kodenya. Anda dapat menemukannya di salah satu repo Github saya (agak terlalu panjang untuk ditempelkan langsung ke artikel ini!).
Apa yang ingin kami capai:
- Kerangka kerja tingkat produksi PHP yang berfungsi penuh dan andal.
- Mampu mengelola tidak hanya pembuatan postingan, tetapi juga mengelola dan memperbarui postingan yang sudah ada.
- Mampu mencari dan memanipulasi postingan berdasarkan; PENGENAL; Judul atau Siput.
Akan ada 2 bagian dalam artikel ini: Catatan Penggunaan dan Panduan Langkah demi Langkah.
Tanpa basa-basi lagi, mari kita mulai!
Penggunaan
Pertama-tama, pastikan Anda telah menyertakan file class.postcontroller.php dari Github atau telah menempelkan konten file tersebut ke dalam dokumen PHP Anda. Ini tidak akan berhasil tanpanya! Kita akan melihat kode dalam file ini di paruh kedua tutorial ini.
Buat instance kelas sebagai berikut;
$Poster = new PostController;Pengontrol Pos berfungsi seperti ini; Anda mengatur atribut postingan menggunakan fungsi yang relevan. Kemudian Anda membuat atau memperbarui postingan. Untuk memperbarui postingan, Anda harus mencari terlebih dahulu dan menemukan postingan untuk diperbarui. Kedengarannya cukup sederhana?
Tetapkan Atribut
Judul
Ini menentukan judul postingan. Tidak ada HTML yang diperbolehkan di sini, dan dihapus.
$Poster->set_title( 'The Title' );Ketik
Metode ini mengatur jenis postingan halaman. Masukkan slug dari tipe posting, mis. 'posting' dan 'halaman'. Jenis posting khusus didukung.
$Poster->set_type( 'page' );Konten
Metode ini mengatur konten postingan. HTML diperbolehkan.
$Poster->set_content( '<h1>This is my awesome new post!</h1>' );Penulis
Ini menentukan penulis postingan. Cukup tentukan ID penulis dari penulis baru. Ini harus berupa bilangan bulat.
$Poster->set_author_id( 12 );Siput/'Nama'
Ini adalah jalur url khusus kiriman (jika diaktifkan). Berhati-hatilah dengan hal ini, karena jika slug sudah digunakan, hal ini dapat menyebabkan beberapa kesalahan. Saya telah menyertakan validasi untuk mencoba dan menghindari hal ini dengan cara apa pun. Tidak ada karakter khusus atau html yang diperbolehkan.
$Poster->set_post_slug( "new_slug" );Template (Hanya Halaman)
Metode ini memungkinkan Anda mengatur template halaman Anda (harus berupa halaman). Jika diterapkan pada jenis postingan yang berbeda maka akan diabaikan, dan kesalahan akan ditambahkan ke array kesalahan. Format masukannya adalah 'php_template_name.php' dan unik untuk setiap tema.
$Poster->set_page_template( 'fullwidth_page.php' );Negara Bagian
Metode ini mengatur status postingan. Pilihan yang tersedia;
[ ‘draft’ | ‘publish’ | ‘pending’| ‘future’ | ‘private’ | custom registered status ]$Poster->set_post_state( "pending" );Membuat
Persyaratan minimum untuk membuat postingan adalah menetapkan judul. Anda dapat melakukannya dengan menggunakan kode berikut;
$Poster->set_title( "New Post" );Setelah ini disetel, jalankan saja metode buat.
$Poster->create();Catatan: Metode ini akan memeriksa apakah ada postingan lain dengan nama yang sama (hanya untuk memastikan bahwa postingan tersebut tidak membuat duplikat). Oleh karena itu diperlukan judul unik.
Mencari
Sebelum kita dapat mengupdate postingan yang sudah ada, kita harus menemukannya terlebih dahulu dengan fungsi Pencarian.
Untuk melakukan ini, kami menggunakan metode pencarian.
$Poster->search( 'SEARCH_BY' , 'DATA' );Metode ini menerima 2 parameter, atribut yang akan dicari dan data yang akan dicari.
Anda dapat menelusuri berdasarkan judul;
$Poster->search( 'title' , 'DATA' );Anda dapat menelusuri berdasarkan ID;
$Poster->search( 'id' , 'DATA' );Dan Anda dapat menelusuri berdasarkan slug;
$Poster->search( 'slug' , 'DATA' );Parameter data akan menerima string (jika mencari berdasarkan judul atau slug) atau bilangan bulat (jika mencari berdasarkan ID). Jika postingan atau halaman tidak dapat ditemukan dengan parameter yang ditentukan, kesalahan akan ditambahkan ke array $errors. Anda dapat memanggil dan menampilkannya dengan kode berikut.
$error = $Poster->get_var( 'errors' );
$Poster->PrettyPrint( $error );Memperbarui
Setelah postingan ditemukan, Anda dapat menetapkan atribut baru ke postingan tersebut. Setelah atribut disetel, cukup panggil metode pembaruan.
$Poster->update();Misal Anda ingin mengganti judul postingan 1 (ID=1), gunakan kode berikut.
$Poster->search( 'id', 1 );
$Poster->set_title( 'New Title' );
$Poster->update();Semua atribut dapat diperbarui dengan cara ini.
Mengambil Variabel
Untuk mengambil variabel yang ditentukan, Anda dapat menggunakan metode 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' );Itu dia! Jika Anda memiliki pertanyaan tentang penggunaan, Anda dapat bertanya kepada saya di komentar di sini. Jika Anda menemukan bug, tolong beri tahu saya di Github.
Siap untuk bagian kedua?
Membangun Kelas: Panduan Langkah demi Langkah
Sekarang kita telah melihat cara menggunakan kelas, mari kembali ke awal.
Kelas kita akan diberi nama PostController;
class PostController {
. . . class functions go here . . .
}Bagi Anda yang belum terlalu paham dengan Kelas PHP, Kelas didefinisikan sebagai sebuah objek yang berisi kumpulan fungsi dan variabel yang bekerja sama. Lihat Pendahuluan PHP.net untuk rincian lebih lanjut tentang sintaksis dan teori yang akan kita gunakan untuk membuat kerangka kerja kita. Berikutnya dalam daftar tugas kita adalah mendeklarasikan semua variabel yang akan kita gunakan.
// 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;Oke, jadi mari kita bagi menjadi tiga blok. Blok pertama akan menyimpan Data Postingan yang telah ANDA tentukan. Ini akan menjadi data yang akan digunakan untuk memperbarui dan membuat postingan (saat kita sampai di sana). Meskipun Anda mungkin bisa menebak dari nama variabelnya, berikut adalah daftar data yang ingin kami simpan.
- Judul
- Ketik (Halaman/Postingan dll.)
- Isi
- Kategori/Kategori
- Templat Halaman
- Siput
- ID Penulis, dan
- Status Postingan (misalnya diterbitkan/draf)
Blok kedua akan menyimpan data postingan WordPress aktual yang akan dikembalikan oleh kueri penelusuran kami (atau data tentang postingan yang dibuat setelah dibuat). Variabel '$PC_current_post' akan menampung objek seluruh postingan. Ini menyimpan semua data tentang postingan tersebut, termasuk (yang penting) data yang tercantum di atas. Demikian pula, variabel ID Postingan dan Tautan Perma akan menyimpan potongan data tentang postingan yang ada.
Blok ketiga dan terakhir hanya memiliki satu variabel: array kesalahan. Jika masalah ditemui pada titik 'terjepit' yang diketahui, maka pesan tentang masalah tersebut akan ditambahkan ke array ini untuk referensi Anda. Perlu diingat bahwa saya menyertakan 'PC_' hanya karena kebiasaan baik: nama variabel tidak boleh ambigu. PC adalah singkatan dari 'PostController'. Jika Anda mengubahnya, ingatlah untuk juga mengubah awalan di fungsi get_var().
Sekarang kita sudah menyiapkan semuanya, mari selami fungsi pertama kita.
// 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;
}
}Bagi Anda yang sudah membaca Bagian 1 Seri ini: Membuat Postingan dan Halaman WordPress Menggunakan PHP β Tutorial 101, fungsi ini mungkin sudah tidak asing lagi bagi Anda. Ini hanyalah fungsi yang telah selesai dari tutorial tersebut setelah disesuaikan dengan pengaturan baru ini. Untuk membaca penjelasan fungsi khusus ini, saya sarankan untuk membaca bagian 1. Satu-satunya perbedaan utama pada fungsi itu sendiri adalah bahwa alih-alih menambahkan fungsi ke head WordPress, fungsi tersebut langsung dijalankan.
Sebagai panduan cepat, fungsi ini memeriksa apakah judul telah ditetapkan (ini adalah persyaratan minimum untuk pembuatan postingan). Ia kemudian memeriksa postingan yang ada (berdasarkan judul). Jika postingan ditemukan, pesan ditambahkan ke array error dan kontrol diteruskan ke fungsi update(). Jika postingan dengan judul ini tidak ditemukan, maka $post_data digunakan untuk membuat postingan baru. Variabel Postingan Saat Ini (serta 2 variabel data lainnya) diperbarui untuk menampung data postingan baru ini. Ini bagus untuk memeriksa postingan yang baru saja Anda buat. Jika ada masalah, maka pesan ditambahkan ke array $errors.
Maaf jika itu agak cepat: jika Anda sedikit bingung, saya sarankan Anda membaca artikel 101 saya tentang ini.
Untuk kalian semua yang masih bersamaku, ayo lanjutkan.
// 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;
} Bagian ini cukup sederhana. Fungsi create() dan update() keduanya menggunakan variabel lokal sebagai sumber datanya. Oleh karena itu diperlukan suatu cara untuk mengatur data tersebut. 5 variabel pertama diatur seperti yang Anda lihat di atas. 'Tapi bagaimana dengan 3 lainnya?', Saya mendengar Anda bertanya. Jangan khawatir, ini dia, tetapi Anda akan melihat ada sedikit validasi untuk memverifikasi masukannya (untuk memaksimalkan keandalan).
// 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;
}
}Tiga yang terakhir ini sedikit lebih rumit, tetapi sangat penting untuk menghindari kesalahan yang parah.
set_post_slug()
Fungsi set_post_slug() adalah sesuatu yang Anda harus sangat berhati-hati dengannya. Siput postingan pada dasarnya adalah string yang ditambahkan ke akhir URL dasar untuk membuat alamat individual postingan. Ini juga digunakan sebagai pengidentifikasi posting mendasar oleh WordPress. Misalnya. Siput postingan ini adalah 'kelola-wordpress-posts-php-buat-perbarui'. Ini ditambahkan ke akhir URL dasar, http://wpexplorer.com/, untuk membuat URL unik artikel ini: http://www.wpexplorer.com/manage- wordpress-posts-php-buat-perbarui/. Saya yakin Anda dapat membayangkan masalah yang akan Anda hadapi jika lebih dari satu postingan memiliki slug yang sama (dan karenanya, URL). Ini adalah kekacauan yang sangat buruk sebaiknya dihindari jika memungkinkan.
Post Slug HARUS UNIK
Inilah alasan validasinya. Apa yang terjadi adalah fungsi tersebut mencari postingan dengan slug yang ditentukan. Jika tidak ada yang ditemukan DAN tidak ada halaman yang memiliki jalur tersebut (pada dasarnya sama dengan slug dalam konteks ini), maka bagus! Tetapkan variabelnya. Jika tidak, kesalahan akan ditambahkan ke array $errors dan variabel tidak disetel (fungsi mengembalikan Boolean FALSE).
set_page_template() & tambahkan_kategori()
set_page_template() menetapkan templat halaman (dalam bentuk my_page_template.php) ke Halaman, dan hanya satu halaman. Validasi di sini hanya memeriksa apakah jenis postingan telah disetel ke 'halaman'. Jika benar, simpan datanya. Jika tidak, jangan repot-repot.
add_category() memungkinkan Anda menambahkan array bilangan bulat ke kategori postingan (harus tetap berada dalam array, meskipun hanya menambahkan 1 angka). Bilangan bulat mewakili ID kategori. Validasi hanya mengulang array yang Anda tentukan, memeriksa apakah setiap sel memiliki nilai integer. Jika sel memiliki nilai integer, sel tersebut akan ditambahkan ke array kategori master. Jika tidak, maka akan diabaikan dan kesalahan ditambahkan ke array kesalahan. Cemerlang! Sekarang kita dapat menetapkan semua variabel yang kita perlukan.
Mencari
Di awal tutorial ini, kami mengatakan bahwa kami ingin membuat sistem yang memiliki kemampuan untuk memperbarui postingan WordPress yang ada. Agar hal ini dapat dilakukan, pertama-tama kita perlu mencari postingan yang ingin kita edit. Untuk ini kita akan menggunakan fungsi 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;
}
}Ini adalah fungsi pencarian(). Saya menggunakan pernyataan PHP Switch (bentuk pernyataan IF yang berbeda, yang dalam hal ini akan lebih efisien daripada beberapa if yang disarangkan. Cari tahu lebih lanjut tentang Switch di Manual PHP.net search() fungsi menerima 2 parameter;
1. Nilai 'Cari Berdasarkan'
2. Data yang Akan Dicari
Anda dapat melihat dari kode di atas bahwa ada 3 pilihan 'Cari Berdasarkan'; 'id', 'judul' dan 'siput'. Mari kita lihat satu per satu lebih dekat.
Cari berdasarkan ID
Ini adalah metode pencarian paling sederhana dan hanya mengharuskan Anda mengetahui ID integer postingan. Jika data yang ditentukan adalah bilangan bulat, maka fungsi tersebut akan mengirimkan kueri ke database WordPress Anda (menggunakan fungsi get_post() bawaan). Jika ada postingan dengan bilangan bulat tersebut, maka objek postingan akan dikembalikan dan disimpan dalam variabel PC_current_post (serta ID dan permalink juga disimpan). Sederhana!
Cari berdasarkan Judul
Menurut saya hal ini tidak memerlukan banyak penjelasan: hampir sama dengan menelusuri berdasarkan ID, namun menelusuri postingan berdasarkan judulnya. Jika Anda memiliki postingan/halaman dengan nama yang sama (sesuatu yang tidak saya rekomendasikan) maka postingan dengan ID terkecil akan dipilih. Jika Anda mengetahui bahwa Anda memiliki postingan dengan nama yang sama, jangan gunakan metode ini untuk menghindari kebingungan. Harap diperhatikan: Anda akan melihat kode ini;
$post = get_page_by_title( $data );
if ( ! $post ) {
$post = get_page_by_title( $data, OBJECT, 'post' );
}Alasan mengapa kita harus melakukan ini adalah karena meskipun get_page_by_title() dapat mengembalikan data untuk postingan dan halaman, ia hanya akan mengembalikan halaman kecuali parameter ketiga ditentukan sebagai 'posting'.
Saya tidak bermaksud menyatakan hal yang sudah jelas, tetapi sadarilah bahwa jika Anda mencari berdasarkan judul dan mengubah judul pada saat yang sama, kode tersebut hanya akan dapat dijalankan satu kali (pertama kali). Setelah itu akan muncul error 404 Not Found.
Cari berdasarkan Siput
Ini adalah metode yang bagus dan dapat diandalkan untuk menemukan postingan. Tidak boleh ada ambiguitas karena, seperti yang saya katakan sebelumnya, siputnya harus unik. Lihat bagian SET_POST_SLUG() jika Anda tidak mengerti apa yang saya maksud dengan 'siput'. Untuk melakukan ini, kita hanya perlu menjalankan kueri postingan WordPress untuk menemukan postingan dengan slug tertentu. Kita dapat mengambil ID dari metode ini dan mengatur variabel postingan saat ini dengan cara yang sama seperti 2 metode lainnya. Sama seperti Pencarian berdasarkan Judul, mencari dan mengubah slug secara bersamaan akan menimbulkan masalah. Awas!
Perbarui dan Kelola
Benar! Setelah pencarian selesai, kita dapat beralih ke fungsi update() yang sebenarnya.
// 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 );
}Saya tidak akan berbohong, bagian ini sangat mudah. Pada dasarnya, fungsi pembaruan memeriksa apakah salah satu dari 8 parameter posting telah ditetapkan. Jika demikian, ia akan membuat dan mengisi array yang kompatibel dengan wp_update_post(). Ini berjalan wp_update_post() dan hai, presto! Pekerjaan selesai dengan baik. Untuk efisiensi kami akan menambahkan pemeriksaan sederhana sebelum menetapkan setiap variabel. Ini hanya diperbarui jika sudah berubah. Meskipun saya agak bias, saya harus mengakui bahwa itu adalah kode yang indah!
Nilai yang ditetapkan dibandingkan dengan nilai yang dikembalikan oleh WordPress itu sendiri. Maka hanya diperlukan perbandingan sederhana. Anda akan melihat bahwa pernyataan template dan slug IF memiliki validasi lebih banyak dibandingkan yang lain. Meskipun kami sudah menyertakan validasi untuk memfilter kesalahan tersebut, tidak ada salahnya mengecek ulang! Pemeriksaan templat halaman (memeriksa untuk melihat apakah jenis posting disetel ke halaman) hanya karena mencoba menyetel templat halaman untuk non-postingan adalah kesalahan saya. Maaf tentang pembunuhan yang berlebihan! Di sisi lain, pemeriksaan siput adalah hal yang penting! Anda BENAR tidak ingin terjadi konflik berkepanjangan. Dalam hal ini, tidak ada yang namanya pembunuhan berlebihan. Cukup banyak untuk update(). Terakhir, kami memiliki beberapa fungsi umum yang berguna.
Fungsi Tambahan
Sekarang sebagian besar kelas telah ditulis, ada baiknya untuk menambahkan beberapa fungsi yang berguna/menghemat waktu. Coba lihat;
// 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>";
}Penjelasan Singkat;
- get_content() : Fungsi ini mengembalikan konten postingan yang Anda cari (ini disediakan oleh WordPress dan tidak diatur oleh Anda). Ini tidak menerima parameter apa pun.
- get_var( βvar_nameβ ) : Terkadang hal ini dapat membingungkan ketika Anda telah menyetel banyak data. Ini menerima satu parameter: string dari nama variabel yang Anda inginkan. Berikut adalah daftar 'var_name's yang tersedia;
- 'title' β Judul Postingan yang telah Anda tetapkan.
- 'type' β Jenis Postingan yang telah Anda tetapkan.
- 'konten' β Konten yang telah Anda tetapkan.
- 'kategori' β Kategori yang telah Anda tetapkan (array pengembalian).
- 'template' β Templat Halaman yang telah Anda tetapkan.
- 'slug' β Siput yang telah Anda tetapkan.
- 'auth_id' β ID Penulis yang telah Anda tetapkan.
- 'status' β Status Postingan yang telah Anda tetapkan.
- 'current_post' β Objek WP Posting kembali setelah pencarian.
- 'current_post_id' β ID WP Posting kembali setelah pencarian.
- 'current_post_permalink' β Tautan permanen WP Post kembali setelah pencarian.
- 'errors' β Array Errors (sangat berguna).
- unset_all() : Tidak ada parameter. Satu pekerjaan. Menghapus semua data yang disimpan dalam instance kelas. Awas.
- __toString() : Ini adalah apa yang dijalankan ketika instance kelas itu sendiri dicetak. Pesan kesalahan dicetak. Gunakan Gunakan PrettyPrintAll()
// Start new class
$Poster = new PostController();
// Echoes error message
echo $Poster;- PrettyPrint() : Ini hanyalah fungsi berguna yang menampilkan objek dan array dengan baik di tag 'pra'. Mengambil satu parameter: data menjadi 'PrettyPrinted'.
- PrettyPrintAll() : Ini sama dengan PrettyPrint(), kecuali 'PrettyPrints' seluruh instance kelas (termasuk semua variabel).
Dan itu selesai!
Terima kasih telah membaca artikel saya: Saya harap artikel ini bermanfaat dan mencerahkan!
Anda dapat menemukan versi terbaru Kelas PostController di Github: PostController. Jika Anda menikmati tutorial ini, silakan bagikan! (Penyebutan juga akan salah: @harribellthomas ? ). Jika Anda memiliki pertanyaan, tinggalkan di bagian komentar di bawah.

