PHP İle WordPress Gönderilerini Yönetin – Oluşturun ve Güncelleyin
Söz verdiğim gibi, işte ilk yazımın ikinci bölümü olan 'PHP Kullanarak WordPress Yazıları ve Sayfaları Oluşturun – A 101 Eğitimi'. Bu makalede, sağlam ve nihai olarak güvenilir bir PHP Wrapper Class oluşturmak için Bölüm 1'de tartıştığım temel işlevleri ve teoriyi nasıl genişletebileceğimize bakacağız.
Her zaman olduğu gibi, sadece doğrudan koda dalmak isteyenlere sempati duyuyorum. Bunu Github depolarımdan birinde bulabilirsiniz (doğrudan bu makaleye yapıştırmak biraz uzun oldu!).

Ne elde etmek istiyoruz:
- Tamamen işlevsel ve güvenilir bir PHP üretim düzeyinde çerçeve.
- Yalnızca gönderi oluşturmayı değil, aynı zamanda önceden var olan gönderileri de yönetebilir ve güncelleyebilirsiniz.
- Gönderileri arayabilir ve değiştirebilir; İD; Başlık veya Slug.
Bu makalenin 2 bölümü olacak: Kullanım Notları ve Adım Adım Kılavuz.
Daha fazla uzatmadan, başlayalım!
kullanım
Her şeyden önce, Github'dan class.postcontroller.php dosyasını eklediğinizden veya o dosyanın içeriğini PHP belgenize yapıştırdığınızdan emin olun. Bu onsuz işe yaramaz! Bu öğreticinin ikinci yarısında bu dosyadaki koda bir göz atacağız.
Sınıfı aşağıdaki gibi somutlaştırın;
$Poster = new PostController;
Post Controller şu şekilde çalışır; ilgili işlevleri kullanarak gönderi özelliklerini ayarlarsınız. Ardından bir gönderi oluşturur veya güncellersiniz. Bir gönderiyi güncellemek için önce aramanız ve güncellenecek bir gönderi bulmanız gerekir. Ses yeterince basit mi?
Nitelikleri Ayarla
Başlık
Bu, gönderinin başlığını belirler. Burada HTML'ye izin verilmez ve çıkarılmıştır.
$Poster->set_title( 'The Title' );
Tip
Bu yöntem, sayfanın gönderi türünü ayarlar. Yazı tipinin bilgisini girin, örn. 'posta' ve 'sayfa'. Özel gönderi türleri desteklenir.
$Poster->set_type( 'page' );
İçerik
Bu yöntem, gönderinin içeriğini belirler. HTML'ye izin verilir.
$Poster->set_content( '<h1>This is my awesome new post!</h1>' );
Yazar
Bu, gönderinin yazarını belirler. Yeni yazarın yazar kimliğini belirtmeniz yeterlidir. Bu bir tamsayı olmalıdır.
$Poster->set_author_id( 12 );
Slug / 'Ad'
Bu, gönderinin özel url yoludur (etkinleştirilmişse). Buna dikkat edin, sanki slug zaten kullanılıyormuş gibi bazı hatalara neden olabilir. Her ne pahasına olursa olsun bundan kaçınmak için doğrulamayı dahil ettim. Özel karakterlere veya html'ye izin verilmez.
$Poster->set_post_slug( "new_slug" );
Şablon (Yalnızca Sayfalar)
Bu yöntem, sayfanızın şablonunu (bir sayfa olmalıdır) ayarlamanıza olanak tanır. Farklı bir gönderi türüne uygulanırsa, yok sayılır ve error dizisine bir hata eklenir. Girdinin formatı 'php_template_name.php' olacak ve her tema için benzersiz olacaktır.
$Poster->set_page_template( 'fullwidth_page.php' );
Durum
Bu yöntem, gönderinin durumunu belirler. Mevcut seçenekler;
[ 'taslak' | 'yayınla' | 'beklemede'| 'gelecek' | 'özel' | özel kayıtlı durum ]
$Poster->set_post_state( "pending" );
Oluşturmak
Bir gönderi oluşturmak için minimum gereklilik, başlığın ayarlanmış olmasıdır. Bunu aşağıdaki kodu kullanarak yapabilirsiniz;
$Poster->set_title( "New Post" );
Bu ayarlandıktan sonra, basitçe create yöntemini çalıştırın.
$Poster->create();
Not: Yöntem, aynı ada sahip başka bir gönderi olup olmadığını kontrol edecektir (yalnızca yineleme yapmadığından emin olmak için). Bu nedenle benzersiz bir başlık gereklidir.
Arama
Mevcut bir gönderiyi güncellemeden önce, onu Arama işleviyle bulmalıyız.
Bunu yapmak için arama yöntemini kullanıyoruz.
$Poster->search( 'SEARCH_BY' , 'DATA' );
Bu yöntem, aranacak öznitelik ve aranacak veri olmak üzere 2 parametreyi kabul eder.
Başlığa göre arama yapabilirsiniz;
$Poster->search( 'title' , 'DATA' );
Kimliğe göre arama yapabilirsiniz ;
$Poster->search( 'id' , 'DATA' );
Ve sümüklü böcek ile arama yapabilirsiniz;
$Poster->search( 'slug' , 'DATA' );
data parametresi ya bir dizgiyi (başlık veya bilgi ile aranıyorsa) ya da bir tamsayıyı (kimliğe göre aranıyorsa) kabul edecektir. Belirtilen parametrelerle bir gönderi veya sayfa bulunamazsa, $errors dizisine bir hata eklenir. Bunu aşağıdaki kod ile arayabilir ve görüntüleyebilirsiniz.
$error = $Poster->get_var( 'errors' ); $Poster->PrettyPrint( $error );
Güncelleme
Bir gönderi bulunduğunda, ona yeni nitelikler atayabilirsiniz. Nitelikler ayarlandıktan sonra, güncelleme yöntemini çağırmanız yeterlidir.
$Poster->update();
Örneğin, 1. gönderinin başlığını (ID = 1) değiştirmek isterseniz, aşağıdaki kodu kullanırsınız.
$Poster->search( 'id', 1 ); $Poster->set_title( 'New Title' ); $Poster->update();
Tüm nitelikler bu şekilde güncellenebilir.
Değişkenleri Alma
Tanımlanmış değişkenleri almak için get_vars yöntemini kullanabilirsiniz.
$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' );
Bu budur! Kullanımla ilgili herhangi bir sorunuz varsa, buradaki yorumlarda bana sorabilirsiniz. Bir hata bulursanız, lütfen bana Github'da söyleyin.
İkinci bölüm için hazır mısınız?
Sınıfı Oluşturma: Adım Adım Kılavuz
Şimdi sınıfı nasıl kullanacağımızı gördük, en başa dönelim.
Sınıfımızın adı PostController olacak;
class PostController { . . . class functions go here . . . }
PHP Sınıfları konusunda bilgili olmayanlarınız için, Sınıf, birlikte çalışan işlevler ve değişkenler koleksiyonunu içeren bir nesne olarak tanımlanır. Çerçevemizi oluşturmak için kullanacağımız sözdizimi ve teori hakkında daha fazla ayrıntı için PHP.net Giriş bölümüne bakın. Yapılacaklar listemizde bir sonraki adım, kullanacağımız tüm değişkenleri bildirmektir.
// 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, bu nedenle edelim SİZE belirttiniz Mesaj Verileri yapacak üç blocks.The ilk blok içine bu aşağı bölünürler. Bu, bir gönderiyi güncellemek ve oluşturmak için kullanılacak veriler olacaktır (buna geldiğimizde). Muhtemelen değişken isimlerine göre tahminde bulunabilseniz de, burada saklamak istediğimiz verilerin bir listesi bulunmaktadır.
- Başlık
- Tür (Sayfa/Mesaj vb.)
- İçerik
- Kategori/Kategoriler
- Sayfa Şablonu
- sümüklü böcek
- Yazar kimliği ve
- Gönderinin Durumu (ör. yayınlandı/taslak)
İkinci blok, arama sorgumuzun döndüreceği gerçek WordPress gönderi verilerini (veya oluşturulduktan sonra oluşturulan bir gönderi hakkındaki verileri) tutacaktır. '$PC_current_post' değişkeni tüm yazının bir nesnesini tutacaktır. Bu, (önemli bir şekilde) yukarıda listelenen veriler de dahil olmak üzere gönderiyle ilgili tüm verileri tutar. Benzer şekilde, Gönderi Kimliği ve Kalıcı Bağlantı değişkenleri, mevcut gönderiyle ilgili bu veri parçalarını tutacaktır.
Üçüncü ve son bloğun yalnızca tek bir değişkeni vardır: error dizisi. Bilinen bir 'tutam' noktasında bir sorunla karşılaşılırsa, referans olması için bu diziye sorunla ilgili bir mesaj eklenecektir. Lütfen 'PC_'yi sadece iyi bir alışkanlıktan dahil ettiğimi unutmayın: değişken isimleri asla belirsiz olmamalıdır. PC, 'PostController' anlamına gelir. Bunu değiştirirseniz, get_var() işlevindeki öneki de değiştirmeyi unutmayın.
Pekala, şimdi her şeyi ayarladığımıza göre, ilk fonksiyonumuza geçelim.
// 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; } }
Bu Dizinin 1. Bölümünü okuyanlarınız için: PHP Kullanarak WordPress Yazıları ve Sayfaları Oluşturun – A 101 Eğitimi, bu işlev size tanıdık gelecektir. Bu, bu yeni kuruluma uyarlandıktan sonra yalnızca bu öğreticinin tamamlanmış işlevidir. Bu özel işlevin açıklamasını okumak için 1. bölüme bakmanızı tavsiye ederim. İşlevin kendisindeki tek büyük fark, işlevi WordPress başlığına eklemek yerine hemen çalıştırılmasıdır.
Hızlı bir geçiş olarak, işlev bir başlığın ayarlanıp ayarlanmadığını kontrol eder (bu, post oluşturma için minimum gereksinimdir). Daha sonra mevcut bir gönderiyi kontrol eder (başlığa göre). Bir gönderi bulunursa, error dizisine bir mesaj eklenir ve kontrol update() işlevine iletilir. Bu başlıkta bir gönderi bulunamazsa, yeni bir gönderi oluşturmak için $post_data kullanılır. Mevcut Gönderi değişkeni (ve diğer 2 veri değişkeni) bu yeni gönderinin verilerini tutacak şekilde güncellenir. Bu, az önce yaptığınız gönderiyi kontrol etmek için iyidir. Sorun varsa, $errors dizisine bir mesaj eklenir.
Biraz hızlı olduysa özür dilerim: Biraz kafanız karıştıysa, bununla ilgili 101 makaleme göz atmanızı tavsiye ederim.
Hala benimle olan hepiniz için, devam edelim.
// 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; }
Bu biraz oldukça basit. create() ve update() işlevlerinin ikisi de verilerinin kaynağı olarak yerel değişkenleri kullanır. Bu nedenle, bu verileri ayarlamak için bir yola ihtiyacımız var. İlk 5 değişken yukarıda gördüğünüz gibi ayarlanmıştır. 'Peki ya diğer 3'ü?' diye sorduğunuzu duyar gibiyim. Endişelenme, işte buradalar, ancak girdilerini doğrulamak için (güvenilirliği en üst düzeye çıkarmak için) biraz doğrulama olduğunu göreceksiniz.
// 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; } }
Bu son üçü biraz daha karmaşıktır, ancak korkunç hatalardan kaçınmak için çok önemlidir.

set_post_slug()
set_post_slug() işlevi, çok dikkatli olmanız gereken bir şeydir. Gönderi bilgisi, esasen gönderinin bireysel adresini oluşturmak için temel URL'nin sonuna eklenen dizedir. Bu aynı zamanda WordPress tarafından temel bir gönderi tanımlayıcısı olarak kullanılır. Örneğin. Bu gönderideki bilgi 'manage-wordpress-posts-php-create-update' şeklindedir . Bu, bu makalenin benzersiz URL'sini oluşturmak için temel URL'nin sonuna http://wpexplorer.com/ eklenir: http://www.wpexplorer.com/manage-wordpress-posts-php-create-update/ . Birden fazla gönderide aynı sümüklü böcek (ve dolayısıyla URL) varsa, karşılaşacağınız sorunları hayal edebileceğinizden eminim. Mümkünse kaçınılması gereken gerçekten kötü bir karışıklıktır.
Post Slug BENZERSİZ OLMALIDIR
Doğrulamanın nedeni budur. Olan şey, işlevin belirtilen sümüklü böcek içeren gönderileri aramasıdır. Hiçbiri bulunamazsa VE yol olarak buna sahip hiçbir sayfa yoksa (esas olarak bu bağlamda bilgiyle aynı), o zaman harika! Değişkeni ayarlayın. Değilse, $errors dizisine bir hata eklenir ve değişken ayarlanmaz (işlev bir Boolean FALSE döndürür).
set_page_template() & add_category()
set_page_template () Bir Sayfa (form my_page_template.php olarak) bir sayfa şablonu ve sadece bir sayfa atar. Buradaki doğrulama, gönderi türünün 'sayfa' olarak ayarlanıp ayarlanmadığını kontrol eder. Doğruysa, verileri saklayın. Değilse, zahmet etmeyin.
add_category() , gönderinin kategorilerine bir tamsayı dizisi eklemenize izin verir (yalnızca 1 sayı eklese bile yine de bir dizide olmalıdır). Tamsayılar kategori kimliklerini temsil eder. Doğrulama, her hücrenin bir tamsayı değerine sahip olup olmadığını kontrol ederek belirttiğiniz dizi boyunca basitçe döner. Hücrenin bir tamsayı değeri varsa, ana kategoriler dizisine eklenir. Değilse, yok sayılır ve error dizisine bir hata eklenir. Parlak! Artık ihtiyacımız olan tüm değişkenleri atayabiliriz.
Aranıyor
Bu öğreticinin başında, mevcut WordPress gönderilerini güncelleme yeteneğine sahip bir sistem yapmak istediğimizi söylemiştik. Bunun mümkün olması için öncelikle düzenlemek istediğimiz gönderiyi bulmamız gerekiyor. Bunun için search() fonksiyonunu kullanacağız.
// 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; } }
Bu arama() işlevidir. PHP Switch deyimini kullanıyorum (bu durumda birden çok iç içe If'den daha verimli olacak olan farklı bir IF deyimi biçimi. PHP.net'te Switch hakkında daha fazla bilgi edinin El Kitabı search() işlevi 2 parametre kabul eder;
1. 'Arama Ölçütü' Değeri
2. Aranacak Veriler
Yukarıdaki koddan 3 adet 'Arama Ölçütü' seçeneği olduğunu görebilirsiniz; 'id', 'başlık' ve 'sümüklü böcek'. Her birine biraz daha yakından bakalım.
Kimliğe göre ara
Bu en basit arama yöntemidir ve yalnızca gönderinin tamsayı kimliğini bilmenizi gerektirir. Belirtilen veriler bir tamsayıysa, işlev WordPress veritabanınıza bir sorgu gönderir (dahili get_post() işlevini kullanarak). Bu tamsayıya sahip bir gönderi varsa, gönderi nesnesi döndürülür ve PC_current_post değişkeninde saklanır (aynı zamanda ID ve kalıcı bağlantı da saklanır). Basit!
Başlığa göre ara
Bunun gerçekten fazla açıklamaya ihtiyacı olduğunu düşünmüyorum: bu, kimliğe göre arama yapmakla hemen hemen aynı, ancak bunun yerine gönderiyi başlığına göre arar. Eğer Mesajları varsa / aynı adı (ben tavsiye etmiyorum şey) sahip sayfalar daha sonra en küçük kimliğine sahip sonrası seçilecektir. Aynı ada sahip gönderileriniz olduğunu biliyorsanız, karışıklığı önlemek için bu yöntemi kullanmayın. Lütfen Dikkat: Bu kodu göreceksiniz;
$post = get_page_by_title( $data ); if ( ! $post ) { $post = get_page_by_title( $data, OBJECT, 'post' ); }
Bunu yapmamızın nedeni, get_page_by_title()'ın hem yazılar hem de sayfalar için veri döndürebilmesine rağmen, üçüncü parametre 'post' olarak belirtilmedikçe yalnızca sayfaları döndürmesidir.
Bariz olanı belirtmek istemiyorum, ancak başlığa göre arama yapıyorsanız ve aynı anda başlığı değiştiriyorsanız, kodun yalnızca bir kez (ilk kez) çalışabileceğinin farkında olun. Bundan sonra 404 Bulunamadı hatası verecektir.
Slug'a göre ara
Bu, gönderileri bulmak için güzel ve güvenilir bir yöntemdir. Belirsizlik olmamalıdır, çünkü daha önce de söylediğim gibi , slug benzersiz olmalıdır . ' Sümüklü böcek' ile ne demek istediğimi anlamadıysanız , SET_POST_SLUG() bölümüne bakın. Bunu yapmak için, belirli bir sümüklü böcek içeren gönderileri bulmak için bir WordPress gönderi sorgusu çalıştırmamız gerekiyordu. ID'yi bu yöntemden alabilir ve mevcut post değişkenlerini diğer 2 yöntemle aynı şekilde ayarlayabiliriz. Başlığa Göre Aramada olduğu gibi, birlikte slug aramak ve değiştirmek de sorunlara neden olacaktır. Dikkat!
Güncelle ve Yönet
Doğru! Artık arama devre dışı kaldığına göre, gerçek update() işlevine geçebiliriz.
// 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 ); }
Yalan söylemeyeceğim, bu kısım gerçekten çok kolay. Esasen güncelleme işlevi, 8 post parametresinden herhangi birinin ayarlanıp ayarlanmadığını kontrol eder. Eğer öyleyse, wp_update_post() ile uyumlu bir dizi oluşturur ve doldurur. wp_update_post() ve hey presto! İş başarıyla tamamlandı. Verimlilik için her değişkeni atamadan önce basit bir kontrol ekleyeceğiz. Yalnızca değiştiyse güncellenir. Biraz önyargılı olmama rağmen, bunun güzel bir kod olduğunu itiraf etmeliyim!
Ayarlanan değerler, WordPress tarafından döndürülen değerlerle karşılaştırılır. O zaman sadece basit bir karşılaştırma gereklidir. Şablon ve slug IF ifadelerinin diğerlerinden biraz daha fazla doğrulamaya sahip olduğunu fark edeceksiniz. Bunlar için hataları filtrelemek için doğrulamayı zaten dahil etmiş olsak da, iki kez kontrol etmenin bir zararı yoktur! Sayfa şablonu kontrolü (gönderi türünün sayfa olarak ayarlanıp ayarlanmadığını kontrol eder), çünkü gönderi olmayanlar için bir sayfa şablonu ayarlamaya çalışmak benim hatamdır. Fazlalık için özür dilerim! Öte yandan slug kontrolü önemli bir tanesidir! GERÇEKTEN sümüklü böcek çatışmaları yaşamak istemezsiniz. Bu durumda, aşırıya kaçma diye bir şey yoktur. update() için hemen hemen bu kadar. Son olarak, bazı faydalı genel fonksiyonlarımız var.
İlave fonksiyonlar
Artık sınıfın büyük kısmı yazıldığına göre, birkaç yararlı/zaman kazandıran işlev eklemek her zaman iyi bir fikirdir. bir göz atın;
// 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. Eg;<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>"; }
Hızlı Açıklamalar;
- get_content() : Bu işlev, aradığınız gönderinin içeriğini döndürür (bu, WordPress tarafından sağlanır ve sizin tarafınızdan ayarlanmaz). Bu herhangi bir parametre kabul etmez.
- get_var( 'var_name' ) : Bazen çok fazla veri ayarladığınızda kafa karıştırıcı olabilir. Bu, bir parametreyi kabul eder: istediğiniz değişken adının bir dizesi. İşte mevcut 'var_name'lerin bir listesi;
- 'başlık' – Belirlediğiniz Gönderi Başlığı.
- 'type' – Ayarladığınız Gönderi Türü.
- 'içerik' – Ayarladığınız İçerik.
- 'category' – Ayarladığınız Kategoriler (diziyi döndürür).
- 'şablon' – Ayarladığınız Sayfa Şablonu.
- 'slug' – Ayarladığınız Slug.
- 'auth_id' – Belirlediğiniz Yazar Kimliği.
- 'status' – Ayarladığınız Gönderi Durumu.
- 'current_post' – Aramadan sonra döndürülen WP Gönderi Nesnesi.
- 'current_post_id' – Aramadan sonra döndürülen WP Posta Kimliği.
- 'current_post_permalink' – Aramadan sonra WP Post'un kalıcı bağlantısı döndürüldü.
- 'errors' – Errors Array (çok kullanışlı).
- unset_all() : Parametre yok. Tek iş. Sınıfın örneğinde depolanan tüm verileri siler. Dikkat.
- __toString() : Sınıfın kendisi yazdırıldığında çalıştırılan budur. Hata mesajı yazdırıldı. PrettyPrintAll() Kullan'ı kullanın
// Start new class $Poster = new PostController(); // Echoes error message echo $Poster;
- PrettyPrint() : Bu, nesneleri ve dizileri 'pre' etiketlerinde güzel bir şekilde görüntüleyen yardımcı bir işlevdir. Bir parametre alır: 'PrettyPrinted' olacak veriler.
- PrettyPrintAll() : Bu, PrettyPrint() ile aynıdır, sınıfın tüm örneğini (tüm değişkenler dahil) 'PrettyPrints' dışında.
Ve bu bir sargı!
Yazımı okuduğunuz için teşekkür ederim: Umarım hem faydalı hem de aydınlatıcı bulmuşsunuzdur!
PostController Class'ın en son sürümünü Github: PostController'da bulabilirsiniz. Bu öğreticiyi beğendiyseniz, lütfen paylaşın! (Bir söz de çok yanlış gider: @harribellthomas ). Herhangi bir sorunuz varsa, bunları aşağıdaki yorumlar bölümünde bırakın.
ev borcu WordPress sitesi