PHP – Eğitim 101 kullanarak bir WordPress Gönderisi ve Sayfası Oluşturun
Şüphesiz, yüklediğinizde sizin için otomatik olarak ‘kukla verileri’ yüklediğini iddia eden WordPress temasını ve eklentisini gördünüz, böylece hemen tam bir web siteniz var.Size sadece PHP işlevini kullanarak bunu başarma yöntemini göstereceğim.Bu, aşağıdaki durumlarda yararlı olabilir.
Temanız veya eklentiniz belirli bir gönderi veya sayfa gerektirir.
Yukarıda açıklandığı gibi kukla enstantane premium vermek istiyorsunuz.
Gönderiyi otomatikleştirmek istiyorsunuz.
Sadece öğrenmek istiyorsun.
Bu öğreticide, ‘hızlı ve kirli’ bir çalışma çözümü elde etmek için basit bir başlangıç işlevi yapacağız.Daha sonra farklı bir öğreticide, güçlü ve kullanımı kolay bir sistem yaratmak için burada öğrendiklerimizi nasıl genişleteceğimizi öğreneceğiz.
Tüm yolları okumak yerine mevcut kodlarla oynamayı tercih edenler için, kullanım ve not örnekleriyle birlikte son işlevlerimiz. if (! function_exists (‘postcreator’))) {function postcreator ($ name = ‘otomatik yazı’, $ type = ‘post’, $ content = ‘kukla içerik’, $ kategori = dizi (1,2), $ şablon = NULL, $ ACKAD_ID = ‘1’, $ status = ‘yayınlama’) {define (post_name, $ name); tanım (post_type, $ type); tanım (post_content, $ content); tanımlama (post_category, $ kategorisi); tanımlama (post_template, ”); DEFINE (Post_auth_Id, $ worste_id); tanımlama (Post_status, $ status); if ($ type == ‘sayfa’) {$ post = get_page_by_title (post_name, ‘object’, $ türü); $ post_id = $ post-> id; $ Post_data = get_page ($ Post_id); tanımlama (Post_template, $ şablon); } else {$ post = get_page_by_title (post_name, ‘object’, $ type); $ post_id = $ post-> id; $ Post_data = get_post ($ Post_id); } function hbt_create_post () {$ post_data = array (‘post_title’ => wp_strip_all_tags (post_name), ‘post_status’ => post_content, ‘post_content’ => post_status, ‘post_category’ => post_category ‘=> post_category’ => post_category ‘ ; wp_insert_post ($ Post_data, $ error_obj); } if (! isset ($ post)) {add_action (‘admin_init’, ‘hbt_create_post’); Dönüş $ error_obj; }}} /* Postcreator () Postcreator (‘Başlık’, ‘Post Tür’, ‘Post İçerik’, ‘Post Kategorisi’, ‘Dosya Şablon Adı’, ‘Yazar Kimlik Numarası’, ‘Post Durumu’ için kullanılabilir tüm seçenekler) ;
Başlık – HTML çıkarıldı. Basit dize. Gönderi tipi – Post tipi sümüklüsü. Örneğin ‘yazı’ veya ‘sayfa’. Özel yazı türleri desteklenir. Gönderi İçeriği – Gönderi/Sayfanın İçeriği. HTML izin verildi. Gönderi kategorisi – Post şablonu dosya adınıza bağlantı vermek istediğiniz kategori/kategorilerin tamsayı kimliğinin bir dizisi – şablonun dosya adı. Sadece sayfalar için. ‘File_name.php’ biçiminde. Yazar kimlik numarası – tamsayı değeri. Varsayılan 1’dir. Durum sonrası – kullanılabilir seçenekler; [‘Taslak’ | ‘Yayınla’ | ‘Beklemede’ | ‘Gelecek’ | ‘Özel’ | Özel Kayıtlı Durum] Başarılı olursa, Postcreator () hiçbir şey döndürür. Postcreator () bir hata varsa bir WP_ERROR nesnesi döndürür. */ Post-Creator (‘Lorem Ipsum’, ‘sayfa’, ‘büyük bir Dolor porsiyonu ile. Bu, Harri Bell-Thomas’ın Post-Creator işlevi kullanılarak oluşturuldu.’); Adım Adım Kılavuzu PostCreator () adlı bir PHP işlevi oluşturacağız ve belirli bir parametre almak için buna ihtiyacımız olacak. Her parametreye varsayılan olarak verildi, bu nedenle teknik olarak işlevinizi çağırırken bunlardan birini belirlemenize gerek yok, ama hey, eğlence nerede?
Postcreator işlevi ($ name = ‘otomatik posta’, $ type = ‘post’, $ content = ‘kukla içerik’, $ category = dizi (1,2), $ template = null, $ yazar_id = ‘1’, $ durum = ‘yayın’) {// işlev çıkışı burada} Sonraki, aşağıdaki gömülü işlev için gereken bazı sabitleri tanımlayacağım. (Bu, sabiti kullanmamak için yeniden yazılabilir, ancak kullandım çünkü bence temel postcreator () işlevini genişletirken yararlıdır, ancak başka bir öğretici için bir hikaye. (Post_type, $ type); tanımlama (post_content, $ content); tanımlama (post_category, $ kategorisi); tanımlama (post_template, ”); tanım (post_auth_id, $ yazar_id); define (post_status, $ status); tamam, yani Şimdiye kadar, üretilen (kabus, inan bana!) Üretilen yinelenen yayınları/sayfaları önlemek için birkaç doğrulama ekledim.
Gönderi başlığını kontrol etmeyi seçmemin nedeni, WordPress’in bir sayfa üretmek için gereken tek şey budur (gerisi otomatik olarak oluşturulur). Bu doğrulamayı yapmanın başka bir yolu da ‘salyangoz’ veya posta kimliklerinin kontrol edilmesini içerir. Bütün bunlar bir sonraki öğreticide tartışacağız. Bu, Post/sayfanın eklentiniz veya temanız tarafından ihtiyaç duyulması durumunda çok kullanışlıdır. Bunu ilk olarak eklentilerimden biri için geliştirdim çünkü belirli bir sayfa şablonuyla birlikte bir sayfaya ihtiyaç duyuyordu. Bu işlevle, sadece bir postcreator () ‘i kaydediyorum WordPress’ admin_init ‘, yani birisi onu kaldırmaya çalışırsa (cesaretlendirin!) Yakında diğer eklentilerle ilgili sorunları önlemek için yeniden yapılır. Kimsenin istemediğini unutmayın. Blog kaçırılacak, bu yüzden onlara ne olduğunu açıkça söylediğinizden emin olun ve onlara kapatma seçeneği verebilir. Şimdi doğrulamaya geri dönelim. İşte bir sonraki kod biti. if ($ type == ‘sayfa’) {$ post = get_page_by_title (post_name, ‘object’, $ türü); $ post_id = $ post-> id; $ Post_data = get_page ($ Post_id); tanımlama (Post_template, $ şablon); } else {$ post = get_page_by_title (post_name, ‘object’, $ type); $ post_id = $ post-> id; $ Post_data = get_post ($ Post_id); } Peki burada ne oldu?
Bu temelde iki kez tekrarlanan aynı işlemdir.Bunu yaptım çünkü yayınlama yolu ve sayfa biraz farklı muamele gördü.Ayrıca, post_template sabiti yalnızca bir sayfa oluşturmaya çalışırsanız belirlenir, çünkü yalnızca sayfa parametreyi alabilir (örneğin, standart bir yazı yapmaya çalışırsanız bu parametre yok sayılır).IF maddesinin ilk satırında (bilmiyorsanız teknik adı ‘apodoz’) $ Post değişkeni tanımlanır.Yapılanla aynı ada sahip bir posta/sayfa varsa, $ Post mevcut veri girişleriyle doldurulur (bir nesne olarak, dizi değil, ancak gerçekten gereklise bu değiştirilebilir).Bu değişken, başlığınızın benzersiz olup olmadığını test etmek için kullanılır.Sonraki iki satırı ekliyorum çünkü bir kez daha, bu işlevi genişletmek istiyorsanız çok yararlı.Bir örnek varsa mevcut yayınları güncellemektir.
Sırada ‘admin_head’ kancasına eklenecek yuvalama işlevimizdir.İşte burada;İşlev hbt_create_post () {$ post_data = array (‘post_title’ => wp_stip_all_tags (post_status ‘=> post_content,’ post_content ‘=> post_status,’ post_type ‘=> post_type,’ post_author ‘=> post_aut’ => post_author ‘=> post_type,’ post_author ‘=> post_aut’ => Post_category, ‘page_template’ => post_template);wp_insert_post ($ Post_data, $ error_obj);} Basitçe söylemek gerekirse, yayın/sayfamızı üretmek için varsayılan WordPress işlevini (wp_insert_post) kullanır.Post_data’yı parametre dizimizle dolduruyoruz (burada kullanılan sabitlerimizi görebilirsiniz).Bu yapılır ve bir hata varsa, boolean $ error_obj değeri üretir.True = sorun.Yanlış = Her şey yolunda.Yapılacak son şey, önceki işlevi yöneticinin başında çalıştırmaktır, ancak yalnızca doğrulama yoluyla geçerse ve hata nesnesini geri yüklerse.
if (! isset ($ post)) {add_ace (‘admin_init’, ‘hbt_create_post’); Dönüş $ error_obj; } Büyük! Şimdi inanılmaz işlevimizi yaptık, hadi kullanalım! Kullanım, Postcreator Function () ve Run’a oldukça dahildir. Bu, varsayılan değeri kullanarak çalışır, ancak ayarlama yeteneğini istersek? Sonra parametrelerimizi kullanıyoruz. Postcreator (‘Başlık’, ‘Post Tür’, ‘Post İçerik’, ‘Post Kategori’, ‘Dosya Şablonu Adı’, ‘Yazar Kimlik Numarası’, ‘Post Durum’); Tüm bu seçeneklerle, kesme işaretleri kullanmaya dikkat edin. Apostrof’u (parametrenin kendisini çevreleyenler hariç) kullanmak istiyorsanız, bir eğik çizgi ile başladığınızdan emin olun. Örneğin; Post -Creator (‘Alex’in Postu’); Başlık parametreleri bir dize değeri alır. Bu, HTML etiketinden çıkarılır. Post tipi parametreler, örneğin post tipinden sümüklü böcekler alır; ‘Yayın’ veya ‘sayfa’. Özel yayın türleri desteklenir. Postcreator (‘Alex’s Post’, ‘sayfa’); İçerik yayın ‘dize değeri alır. Bu, oluşturulan yayınların/sayfaların içeriği olacaktır. HTML’ye burada izin verilir. Postcreator (‘Alex’s Post’, ‘Sayfa’, ‘Kuvvet bununla güçlü …’); Post kategorisi bir tamsayı dizisi alır. Tamsayılar, yayınlar/sayfalarla ilişkili kategori/kategori kimliğine göre.
Postcreator (‘Alex’s Post’, ‘Sayfa’, ‘Kuvvet bununla güçlüdür …’, dizi (1, 2)); Şablon dosya adı, yeni sayfanızdan istenen sayfa şablonunu belirleyen bir dize değeridir. Bu sadece sayfa için çalışır. Biçim; ‘nama_file.php’. Postcreator (‘Alex’s Post’, sayfa ‘,’ Kuvvet bununla güçlüdür … ‘, dizi (1, 2),’ fullwidth_page.php ‘); Yazarın kimlik numarası, yazarın kimliğinin tamsayı değeridir. Postcreator (‘Alex’s Post’, ‘Sayfa’, ‘Kuvvet bununla güçlüdür …’, dizi (1, 2), ‘fullwidth_page.php’, ‘1’); Post durumu, oluşturulan gönderi/sayfanın durumunu belirlemenizi sağlar. Varsayılan olarak ‘yayınlanmış’. [‘Taslak’ | ‘Yayınla’ | ‘Gecikmeli’ | ‘Gelecek’ | ‘Kişisel’ | Özel Kayıtlı Durum] Post -Creator (‘Alex’s Post’, ‘Sayfa’, ‘Kuvvet bununla güçlüdür …’, dizi (1, 2), ‘Fullwidth_page.php’, ‘1’, ‘Publish’); WordPress’i sarmak çok güçlü bir araçtır, ancak bazen yönetmek zor olabilir. Umarım bu basit parçayı faydalı bulursunuz, belki yol boyunca bir veya iki şey öğrenirsiniz. Bu makalede yaptıklarımızı PHP sınıfına dönüştüreceğim ve daha fazla işlevsellik ve istikrar ekleyeceğim bir sonrakini dört gözle bekleyin. Kısa bir önizleme için, GitHub: Post Kontrolördeki koda bakın Sorularınız varsa, aşağıdaki yorumlar bölümünü sorun.