Wordpress REST API ติดตั้งและเปิดใช้งานในการติดตั้ง vanilla Wordpress 4.7 หรือไม่


29

ฉันเพิ่งติดตั้ง Wordpress 4.7 หนึ่งในที่กล่าวถึงในการประกาศก็คือมันมี REST API

ความเข้าใจของฉันคือ:

  • ไม่จำเป็นต้องใช้ปลั๊กอิน Wordpress REST API อีกต่อไปเพราะสมมติว่ามันถูกรวมเข้ากับคอร์ใน Wordpress 4.7 แล้ว
  • Wordpress REST API เปิดใช้งานตามค่าเริ่มต้น

อย่างไรก็ตามฉันสังเกตเห็นว่าในการติดตั้งวานิลลา Wordpress 4.7 ดูเหมือนว่าจุดสิ้นสุดไม่ทำงาน (ตัวอย่างhttp://examples.com/wp-json/wp/v2/posts)

ฉันจะรู้ได้อย่างไรว่า REST API ใหม่เปิดใช้งานจริงหรือไม่ REST API สามารถเปิดใช้งานหรือปิดการใช้งานด้วย vanilla Wordpress UI หรือฉันควรติดตั้งปลั๊กอินของบุคคลที่สามเพื่อทำเช่นนั้น?


1
มีแท็กการค้นพบในแหล่งที่มาของหน้าเว็บหรือไม่ <link rel='https://api.w.org/' href='https://example.com/wp-json/' />ดูเหมือนว่าจะทำงานบนไซต์ของฉัน
Rarst

@Rarst ถ้าฉันgrep -r "<link rel='https://api.w.org/'" .อยู่ในhtmlไดเรกทอรีมันจะส่งคืนหนึ่ง hit ในไฟล์./wp-includes/rest-api.phpด้วยข้อความนี้:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

ไม่ได้อยู่ในซอร์สโค้ดของคุณในซอร์ส HTML ของเพจจากไซต์ของคุณในเบราว์เซอร์
Rarst

1
@ Rarst ใช่ฉันเห็น<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

การเปิดลิงค์ในเบราว์เซอร์คืออะไร เมื่อเปิดใช้งาน WP_DEBUG
Rarst

คำตอบ:


21

4.7 มีการเปิดใช้งานตามค่าเริ่มต้น วิธีที่ง่ายในการตรวจสอบว่ามันใช้งานได้หรือไม่คือไปที่ example.com/wp-json url และคุณควรได้รับรายชื่อของจุดสิ้นสุดที่ลงทะเบียนไว้ที่นั่น

ไม่มีตัวเลือกอย่างเป็นทางการที่จะปิดการใช้งานมันเป็น (อย่างน้อยก็มีการพูดคุยเกี่ยวกับมันไม่แน่ใจว่ามันได้รับในรุ่น) ฟังก์ชั่นหลักบางอย่างขึ้นอยู่กับมัน

สิ่งที่ชัดเจนที่สุดในการตรวจสอบว่ามันไม่ทำงานคือกฎ htaccess ของคุณและคุณมีไดเรกทอรี wp-json


ฉันไม่มีไดเร็กทอรี wp-json ภายใต้/var/www/htmlหรือไดเร็กทอรีย่อย ฉันดูเหมือนจะไม่มี.htaccessไฟล์ (นอกเหนือจาก/var/www/html/wp-content/plugins/akismet/.htaccessฉันควรมีหรือไม่
Pep

@Pep คุณใช้เว็บเซิร์ฟเวอร์อะไร คุณมี Permalink สวยไหม?
Mark Kaplun

อาปาเช่ ฉันทำตามขั้นตอนในบทช่วยสอนเหล่านี้เพื่อติดตั้ง Wordpress 4.7 บน AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.htmlและdocs.aws.amazon.com/AWSEC2/latest/UserGuide/
Pep

ไม่คุ้นเคยกับ AWS แต่ถ้าคุณติดตั้งวานิลลาเวิร์ดเพรสคุณควรมี. htaccess ที่รูทของการติดตั้งของคุณ หากไม่พยายามไปที่การตั้งค่า> Permalinks ตรวจสอบให้แน่ใจว่าคุณไม่ได้อยู่ในการตั้งค่าธรรมดาบันทึกแล้วตรวจสอบว่ามีการสร้าง htaccess หรือไม่
Mark Kaplun

6
ฉันพบปัญหาในที่สุด เพราะผมไม่ทราบว่าจะได้รับความคิดเห็นที่จำเป็นสำหรับส่วนที่เหลือ API เพื่อทำงานผมข้ามระหว่างการติดตั้งเริ่มต้นขั้นตอนการตั้งค่าAllowOverride Allในส่วนของ<Directory "/var/www/html"> นั่นเป็นเหตุผลที่มันก็ไม่สนใจการเปลี่ยนแปลงของฉันไป/etc/httpd/conf/httpd.conf .htaccessขณะนี้มีลิงก์อื่นที่ไม่ใช่ PLain จุดสิ้นสุด REST API ใช้งานได้
Pep

11

ฉันมี 4.7 ก็คิดว่า REST API ถูกปิดใช้งาน แต่ฉันถูกหลอกด้วย URL หากต้องการดู URL ที่ถูกต้องให้ค้นหาบรรทัดที่มีลักษณะดังนี้:

link rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' /> ดังนั้นการใช้http: // mysite? rest_route = /เนื่องจากคำนำหน้าช่วยแก้ไขปัญหาของฉันได้ ตัวอย่างเช่นการกู้คืนโพสต์ก็เพียงพอที่จะพิมพ์: http: // mysite? rest_route = / wp / json

ฉันไม่พบเอกสารที่จำเป็นต้องใช้พารามิเตอร์การสืบค้น ฉันเป็นคนเดียวหรือเปล่า


ทำงานกับฉันด้วย wordpress 4.8.x ไม่แน่ใจว่าทำไมถึงไม่มีเอกสารไว้ที่ใดเลย
Anirudha

2
ไม่ใช่คนเดียว พบคำตอบนี้ในความคิดเห็นของคุณหลังจากค้นหา 10 นาที สิ่งที่ต้องทำ:www.example.com?rest_route=/wp/v2/posts
Eugene K

3
ฉันคิดว่าสิ่งนี้จะเกิดขึ้นเมื่อไม่มีการเปิดใช้งานลิงก์ถาวรสวย จากเอกสาร ... "ในเว็บไซต์ที่ไม่มีลิงก์ถาวรเส้นทางจะถูกเพิ่มไปยัง URL เป็นพารามิเตอร์ rest_route แทนตัวอย่างข้างต้น URL แบบเต็มจะเป็นexample.com/?rest_route=/wp/v2/posts / 123 "
ไจล์สบัตเลอร์


1

ฉันเห็นว่าคุณได้แก้ไขปัญหาแล้ว แต่ออกจากโซลูชันของฉันที่นี่เพราะมันใช้ได้กับฉันเช่นกัน ฉันมีปัญหาเดียวกันนี้เมื่ออัปเดตจาก beta15 เป็น core api ใน wp 4.7 ปรากฎว่าเป็นเพราะฉันมีปลั๊กอินบางตัวที่ใช้ฟังก์ชัน register_api_field ที่เลิกใช้แล้วซึ่งฉันเปลี่ยนเป็น register_rest_field ตามบันทึกนี้ในรายการเปลี่ยนแปลง:

การแบ่งเปลี่ยน: เปลี่ยนชื่อ register_api_field () เป็น register_rest_field ()

เปิดตัวฟังก์ชั่น register_api_field () สำหรับการใช้งานร่วมกันได้แบบย้อนหลังซึ่งจะเรียกใช้ _doing_it_wrong () อย่างไรก็ตาม register_api_field () จะไม่ถูกผูกมัดกับเวิร์ดเพรสหลักดังนั้นคุณควรอัปเดตฟังก์ชั่นการโทรของคุณ


1

หาก REST API ไม่ทำงานนอกกรอบหรือหลังจากติดตั้งใหม่และหลังจากพิมพ์

mydomain/wp-json/wp/v2/posts 

จากนั้นคุณจะต้องเปิดใช้งาน "permalinks" ของคุณในชื่อ post_name:

WP Dashboard-> Settings-> Permalinks

หรือหากคุณไม่ต้องการเปิดใช้งาน Permalinks คุณสามารถพิมพ์:

mydomain?rest_route=/wp/v2/posts

ผู้ชายฉันหวังว่า WordPress จะอัปเดตคู่มือที่เหลือของพวกเขาเพื่อให้ใช้งานง่ายขึ้น ฉันชอบเอกสารเวอร์ชันเก่า :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.