Wordpress REST API'si bir vanilya Wordpress 4.7 kurulumunda kurulmuş ve etkin midir?


29

Wordpress 4.7'yi yeni kurdum. Duyurudaki sözlerden biri, bir REST API'sine sahip olduğudur.

Benim anlayışım:

  • Artık Wordpress REST API eklentisine ihtiyaç duyulmuyor, çünkü sözde Wordpress 4.7'de çekirdek ile zaten birleştirilmiş.
  • Wordpress REST API'si varsayılan olarak etkindir.

Bununla birlikte, bir vanilya Wordpress 4.7 kurulumunda, uç noktaların hiçbirinin işe yaramayacağını (örneğin http://examples.com/wp-json/wp/v2/posts) gördüm .

Yeni REST API'sinin gerçekten aktif olup olmadığını nasıl anlarım? REST API, vanilya Wordpress UI ile etkinleştirilebilir mi veya devre dışı bırakılabilir mi, yoksa bunu yapmak için üçüncü taraf bir eklenti kurmalı mıyım?


1
Sayfa kaynağında keşif etiketi var mı? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Sadece sitelerim üzerinde çalışıyor gibi görünüyor.
Rarst

Ben eğer @Rarst, grep -r "<link rel='https://api.w.org/'" .içinde htmldizine, bu dosyada hit döndüren ./wp-includes/rest-api.phpbu metinle:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

Kaynak kodunuzda değil, sitenizdeki bir sayfanın HTML kaynağında tarayıcıda.
Rarst

1
@Rarst, evet görüyorum<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

Bağlantıyı tarayıcıda açmak size ne kazandırır? WP_DEBUG etkinken?
Rarst

Yanıtlar:


21

4.7 varsayılan olarak etkindir. İşe yarayıp yaramadığını kontrol etmenin kolay yolu example.com/wp-json url adresini ziyaret etmektir ve orada kayıtlı son noktaların bir listesini bulmalısınız.

Bunu devre dışı bırakmak için resmi bir seçenek yoktur (en azından piyasaya çıkıp çıkmadığından emin olmadığı konusunda bir konuşma yapıldı), bazı temel işlevler buna bağlı.

Çalışıp çalışmadığını kontrol etmek için en bariz şeyler htaccess kurallarınızdır ve bir wp-json dizininiz var mı


Altında wp-json dizini /var/www/htmlveya alt dizinleri yok. - Bir dosyam yok gibi görünüyor .htaccess( /var/www/html/wp-content/plugins/akismet/.htaccessbir tane olmalı mıyım?
Pep

@Pep, hangi web sunucusunu kullanıyorsunuz? üzerinde güzel kalıcı bağlantıların var mı?
Mark Kaplun


AWS'ye aşina değilsiniz ancak bir vanilya wordpress yüklediyseniz, kurulumunuzun kökünde bir .htaccess olmalıdır. Ayar> kalıcı bağlantılara gitmeye çalışmazsanız, düz ayarda olmadığınızdan emin olun, kaydedin ve ardından bir htaccess olup olmadığını kontrol edin
Mark Kaplun

6
Sonunda sorunu buldum. Ben Kalıcı işe REST API için gerekli olacağını bilmiyordum çünkü ben ilk kurulum sırasında sete adım atlanır AllowOverride Alliçinde <Directory "/var/www/html">bölümüne /etc/httpd/conf/httpd.conf. Bu yüzden değişikliklerimi görmezden geliyordum .htaccess. Şimdi, PLain dışındaki bir kalıcı bağlantıyla, REST API bitiş noktaları çalışır.
Pep

11

4.7’de REST API’nin devre dışı bırakıldığını da düşündüm, ancak URL tarafından kandırıldım. Doğru URL’yi görmek için buna benzer bir satır arayın:

link rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />. Yani, http: // mysite? Rest_route = / öneki olarak kullanmak benim sorunumu çözdü. Örneğin gönderileri kurtarmak için aşağıdakiler yazılmalıdır : http: // mysite? Rest_route = / wp / json

Sorgu paramının gerekli olduğuna dair belgeler bulamadım. Yalnız mıydım?


Benim için WordPress 4.8.x ile çalıştı. Bunun neden hiçbir yerde belgelenmediğinden emin değilsiniz.
Anirudha

2
Sadece o değil. Bu cevabı yalnızca 10 dk aradıktan sonra yorumunuzda buldum. Yapmanız gerekenler:www.example.com?rest_route=/wp/v2/posts
Eugene K

3
Bence bu güzel kalıcı bağlantılar etkin olmadığında olur. Gönderen docs ... "hoş Kalıcı Bağlantılar olmadan sitelerinde, rota yerine rest_route parametresi olarak URL'ye eklenir. Yukarıda Örneğin, tam URL'si şöyle olur example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler,


1

Görüyorum ki sorunu çözdünüz ama benim için çalıştığı gibi çözümümü de burada bıraktım. Wp 4.7’de beta15’den core api’ye güncelleme yaparken de aynı sorunu yaşadım. Bu sorunun değiştiğini, değiştirmedeki bu nota göre register_rest_field olarak değiştirdiğim, register_api_field işlevinin kullanımdan kaldırıldığı bazı eklentilerim olduğu ortaya çıktı:

KIRMA DEĞİŞİMİ: register_rest_field () için register_api_field () adını değiştirin.

_Doing_it_wrong () işlevini kullanan geriye dönük uyumluluk için register_api_field () işlevini tanıtır. Bununla birlikte, register_api_field () hiç bir zaman WordPress çekirdeğine bağlı kalmayacağından, fonksiyon çağrılarınızı güncellemelisiniz.


1

REST API kullanıma hazır değilse veya yeni bir kurulumdan sonra ve yazdıktan sonra

mydomain/wp-json/wp/v2/posts 

o zaman "permalinks" inizi sadece post_name bulunan olarak etkinleştirmeniz gerekir:

WP Panosu-> Ayarlar-> Kalıcı Bağlantılar

Veya kalıcı bağlantıları etkinleştirmek istemiyorsanız, şunu yazabilirsiniz:

mydomain?rest_route=/wp/v2/posts

Dostum, keşke WordPress'in kalan kullanıcı el kitaplarını daha kullanıcı dostu olacak şekilde güncelleseydi. Dokümanların eski halini seviyorum :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.