WP REST API Bölüm 2: Varsayılan bitiş noktasını ayarlayın ve yeni bir noktayı ekleyin

Bu, “WP Rest API” serisinde 3 Madde’nin 2. Maddesi
WP REST API Bölüm 1: WP-API ve React Native ile hücresel uygulamalar oluşturma
WP REST API Bölüm 2: Varsayılan bitiş noktasını ayarlayın ve yeni bir noktayı ekleyin
WP REST API Bölüm 2.5: WordPress 4.4’te kullanma
Bu serinin ilk bölümünde WordPress ve WP JSON API’sını kullanarak çok temel bir React yerel uygulama yaptım. Bu makalede, uygulamaya devam edeceğim ve API’ya uygulamada daha fazla özelliği etkinleştirecek bazı ayarlamalar ekleyeceğim. Bu makaleyi takip edecekseniz, çalışmaya başlayacağımız için ilk taksitleri takip ettiğinizden emin olun!
Temizleme Başlangıçta Functions.php dosyasına bir filtre ekledim. İşlev dt_use_raw_post_content ($ data, $ post, $ request) {$ data-> data [‘content’] [‘düz metin’] = $ post-> post_content; Dönüş $ veri; } Makale yayınlandığından beri, bunun bir şey yapmanın iyi bir yolu olmadığı ve V2 belgelerinin duyguyu paylaştığı söylendi: […] Ateşin arayüzü tüm müşterilere maruz bırakmakla ilgili olduğunu hatırlamak önemlidir, değil Sadece üzerinde çalıştığınız özellikler. Yanıtı değiştirmek tehlikelidir. Zararsız alanlar ekleyin, bu nedenle verileri değiştirmeniz gerekiyorsa, alanı çoğaltmak değiştirilmiş verilerden daha iyidir.
Bu yüzden yapacağım ilk şey, function.php’den satırları silmek. React Native, kutunun dışındaki HTML ve HTML varlıklarını işlemek için iyi bir yola sahip görünmediğinden, yine de yayın içeriğimizin olağan metin sürümünü açığa çıkarmamız gerekiyor, ancak Deep Düşünceler Uygulamamız için özel olarak birkaç kod daha ekleyeceğiz. Daha sonra, tüm kodumuzu bir eklenti haline getirmeliyiz. Sitenizin eklentileri dizininde Deep-Shoughts-Plugin adlı bir klasör oluşturun ve ardından aşağıdaki küçük kaynağı olan Deep-shoughts-plugin.php adlı bir PHP dosyası oluşturun: ‘dt_return_plaintext_concent’,); } // Gönderiler için düz metin içeriği dönüş dt_return_plaintext_concent ($ object, $ field_name, $ request) {return strip_tags (html_entity_decode ($ object [‘content’] [‘rendered’])); } Burada, yalnızca istekleri almak için sağladığımız iade çağrısı işlevinden içeriği alacak olan yayının son noktasına düz metin adlı bir alan eklemek için Register_API_field’ı kullanıyoruz. Register_api_field işlevi hakkında daha fazla bilgi için WP-API belgeleri bkz. Artık eklentinizi etkinleştirebilir ve WP-JSON/WP/V2/Post/[…] için isteğin düz metin alanı içerdiğini görebilirsiniz:
Ayrıca, yanıt ayarlayarak yaptığımız FetchData yönteminde bu alanı yönlendirmek için React yerel uygulamamızı güncellememiz gerekir {başlık: yanıt [0]. WP-API bunun için bazı harika belgeler var, bu yüzden Ins ve Outs hakkında çok fazla ayrıntıyı tartışmayacağım, sadece özel bir son noktası ekleyelim.
Şu anda, React Native uygulamamız http://deep-houghts.dev/wp-json/wp/v2/posts/?filterbreberby] = Rand & Filtre Capital_Page single’a bir talepte bulundu. Bu iyi çalışıyor, ancak önceki makalede belirttiğim gibi, performans çok iyi değil. Genel olarak, WordPress kuyruğu Düzenli = Rand kullanır ve bunun yanı sıra bu URL’ye istekleri depolayamayız, çünkü herhangi bir zamanda farklı bir şey döndürülmesi gerekir. İdeal çözüm, tüm gönderilerin listesini React yerel başvurumuza döndürecek özel bir yangın uç noktası eklemektir, o zaman rastgele sevkiyat kimliklerini seçebilir ve yeni rastgele yayınlar görüntülemek istediğimizde gönderi için doğrudan talep gönderebiliriz. Uygulama. Önce WP-JSON/Deep-Shoughts/V1/All-Post-IDS’de yeni bir rota kaydetmek için Register_Rest_Route işlevini kullanacağız. Bunu daha önce yaptığımız dt_register_api_hooks işlevine ekleyeceğiz:

// Deep-Thirsts/V1/All-Post-IDS rotası Register_Rest_Route (‘Derin Sanat/V1’, ‘/All-Post-Ids/’, Array (‘Yöntemler’ => ‘Get’ ‘ekleyin Geri arama ‘=>’ dt_get_all_post_ids ‘,)); Şimdi, tüm yayın kimliklerinin dizisini geri yükleyecek ana eklenti kapsamına dt_get_all_post_ids geri arama işlevini ekleyebiliriz. Bu sorgunun sonuçlarını her 2 saatte bir sona erdiren geçici bir zamanda kaydedeceğiz, böylece WordPress’in bu verileri her istediğinde tüm WP_Posts tablosuna sorması gerekmez:
// Tüm Gönderme Kimlikleri İşlevini Döndürme DT_GET_ALL_POST_IDS () {if (false === ($ all_post_ids = get_transient (‘dt_all_post_ids’))))))))))) {array (‘NumberPosts’ => -1, ‘Post_Type’ => => -1, ‘Post_type’ => ‘Post’, ‘Fields’ => ‘IDS’,)); // 2 saat önbellek set_trantient (‘dt_all_post_ids’, $ all_post_ids, 60*60*2); } dönüş $ all_post_ids; } Bunun tarayıcınızdaki yeni son noktayı ziyaret ederek çalışıp çalışmadığını test edebilirsiniz: Şuna benzeyen bir yanıt almalısınız: [150, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98] Şimdi sadece bu yeni bitiş noktasından yararlanmak ve önbellekte saklanabilecek istekler yapmak için orijinal reaksiyon uygulamamızı güncellememiz gerekiyor. Önce Request_url değişkenini request_url_base ile değiştireceğiz ve farklı uç nokta için iki değişken daha ekleyeceğiz: var request_url_base = ‘http://deep-touts.dev/wp-json/’; var poss_url_path = ‘wp/v2/direkler/’; var get_post_ids_path = ‘derin-shoughts/v1/all-post-ids’; O zaman uygulamanın ilk durumuna iki yeni özellik eklememiz gerekiyor: Thensids ve CurrentId:
BottlesTate: function () {return {// düşünce başlangıçta yükleme mesajının düşünüldüğünü gösterecek şekilde null olarak ayarlanır: null, whopHtids: null, currentId: null}; } Ardından, özelliği doldurmak için bir yöntem ekleyeceğiz: getAllids: function () {fetch (request_url_base + get_post_ids_path) .that ((yanıt) => rep Respon.json ()) .that ((yanıt) => {// Bu Settate (), yeni verilerin ‘oluşturma’ işlevi tarafından oluşturulan kullanıcı arayüzüne this.setState ({düşünce: yanıt});}) .that (this.fetchdata) .done (); }, getRandid: function () {var currentId = this.state.theoughhts [Math.floor (Math.random ()*this.state.thoughtids.length)]; if (this.state.currentId == currentId) {currentId = this.getRandid (); } else {this.setState ({currentId: currentId}); } Return currentId; } GetAllids () ‘nin kimlik listesini alıp duruma ekledikten sonra yaptığı son şeyin şunu aradığını göreceksiniz. koşabilir. GetalLIDS () ilk olarak çalışmasını sağlamak için FetchData () ‘nı ComponentDidMount () yöntemindeki getAllids () ile değiştirmeliyiz: // Bu bileşen bittiğinde React tarafından otomatik olarak çağrılır. ComponentDidMount: function () {this.getalalIds (); } Ve sonra getRandid () çalıştırmak için fetchData () ‘i güncellememiz ve ardından gönderiyi almak için rastgele bir kimlik kullanmamız gerekir: fetchData: function () {var currentId = this.getRandid (); this.setState ({// Yeni yüklenirken null’a null olarak ayarlayacağız, böylece yükleme mesajı gösteriyor: null,});

fetch (request_url_base + post_url_path + currentId). that ((yanıt) => revail.json ()). that ((yanıt) => {// this.settate () yeni verilerin yeni verilerin uygulanmasına neden olur bunun altındaki ‘oluşturma’ işlevi tarafından oluşturulur. } FetchData () ‘da çok fazla değişmedi, başlangıçta getRandid () için bir çağrı ekledik ve daha sonra çıktıyı, URL’lerle ateş yoluyla belirli yayınlara, sunucu tarafı önbellek sistemiyle kolayca önbelleğe almak için Request_url_base ve Posts_url_Path ile birlikte kullanıyoruz. WP süper önbellek veya vernik. İşte şimdiye kadar tüm index.ios.js dosyalarının çekirdeği: Ve bunu yaparken, bu şimdiye kadarki derin düşüncelerimiz WordPress eklentimiz:
Son nokta sadece gördüğünüz gibi başlangıçtır, WP-API özel alanların eklenmesini ve görevin nispeten önemsiz olan bitiş noktasını yapar. Özel yangının sonu genellikle admin-ajax kullanmaktan daha makul ve bence ele alınması biraz daha kolay. Şu anda, uygulamamız bu makaleyi okumaya başladığınızdan başka bir şey değil, ancak şimdi çok fazla potansiyel var çünkü özel rotanın gücünü açtık. WP-API yeni verileri ortaya çıkarmayı kolaylaştırırsa, verilerimizle etkileşim kurmanın yeni yollarını ortaya çıkarmak da kolay olabilir. Bu ilginç bir olasılık ve bir dahaki sefere keşfedeceğiz! Bu, “WP Rest API” serisinde 3 Madde’nin 2. Maddesi
WP REST API Bölüm 1: WP-API ve React Native ile hücresel uygulamalar oluşturma
WP REST API Bölüm 2: Varsayılan bitiş noktasını ayarlayın ve yeni bir noktayı ekleyin

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir