क्या Wordpress REST API को वेनिला Wordpress 4.7 की स्थापना में सक्षम और सक्षम किया गया है?


29

मैंने अभी Wordpress 4.7 स्थापित किया है। घोषणा में उल्लेखों में से एक यह है कि इसमें REST API की सुविधा है।

मेरी समझ है:

  • Wordpress REST API प्लगइन की अब और आवश्यकता नहीं है, क्योंकि निश्चित रूप से इसे पहले ही Wordpress 4.7 में कोर के साथ मिला दिया गया है।
  • वर्डप्रेस रीस्ट एपीआई डिफ़ॉल्ट रूप से सक्षम है

हालाँकि, मुझे लगता है कि एक वेनिला Wordpress 4.7 स्थापित में, कोई भी समापन बिंदु काम नहीं करता है (उदाहरण के लिए http://examples.com/wp-json/wp/v2/posts)।

मैं कैसे बता सकता हूं कि नया REST API वास्तव में सक्रिय है या नहीं? क्या REST API को वेनिला Wordpress UI के साथ सक्षम या अक्षम किया जा सकता है, या क्या मुझे ऐसा करने के लिए एक तृतीय पक्ष प्लगइन स्थापित करना चाहिए?


1
क्या पेज सोर्स में डिस्कवरी टैग है? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />मेरी साइटों पर काम करने लगता है।
रारस्ट

@ रुर्स्ट, अगर मैं डायरेक्टरी grep -r "<link rel='https://api.w.org/'" .में हूं, तो htmlयह ./wp-includes/rest-api.phpइस टेक्स्ट के साथ फाइल में एक हिट देता है :echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
पेप

आपके स्रोत कोड में नहीं , ब्राउज़र में आपकी साइट से किसी पृष्ठ के HTML स्रोत में।
रार्स्ट डे

1
@ सार, हाँ मैं देख रहा हूँ<link href="http://example.com/wp-json/" rel="https://api.w.org/">
पेप

ब्राउज़र में लिंक खोलने से आपको क्या मिलता है? WP_DEBUG सक्षम होने के साथ?
रारस्ट

जवाबों:


21

4.7 यह डिफ़ॉल्ट रूप से सक्षम है। यह जाँचने का आसान तरीका है कि यह काम कर रहा है या नहीं, उदाहरण के लिए यात्रा करें.com/wp-json url, और आपको वहां पंजीकृत अंतिम बिंदुओं की एक सूची मिलनी चाहिए

इसे अक्षम करने का कोई आधिकारिक विकल्प नहीं है (कम से कम इस बारे में कोई बात नहीं थी कि यह रिलीज़ में मिला है या नहीं), कुछ कोर कार्यक्षमता इस पर निर्भर करती है।

अगर यह काम नहीं कर रहा है, तो जांचने के लिए सबसे स्पष्ट चीजें आपके htaccess नियम हैं, और क्या आपके पास wp-json निर्देशिका है


मेरे पास एक wp-json निर्देशिका /var/www/htmlया इसके उपनिर्देशिका नहीं हैं। मुझे एक .htaccessफ़ाइल नहीं लग रही है (इसके अलावा /var/www/html/wp-content/plugins/akismet/.htaccess, क्या मुझे एक होना चाहिए?
पेप

@Pep, आप किस वेबसर्वर का उपयोग करते हैं? क्या आपके पास बहुत अधिक पर्मलिंक हैं?
मार्क कप्लून

अमरीका की एक मूल जनजाति। मैंने AWS पर Wordpress 4.7 को इनस्टॉल करने के लिए इन ट्यूटोरियल्स में बिल्कुल चरणों का पालन किया: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html और docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
पेप

AWS से परिचित नहीं है, लेकिन यदि आपने एक वेनिला वर्डप्रेस स्थापित किया है, तो आपको अपने इंस्टाल के मूल में एक .htaccess होना चाहिए। यदि सेटिंग पर जाने की कोशिश न करें> पर्मलिंक्स, सुनिश्चित करें कि आप सादे सेटिंग पर नहीं हैं, सहेजें, और फिर जांचें कि क्या htaccess उत्पन्न हुआ था
मार्क कपलुन

6
मैं अंत में मुद्दा मिल गया। क्योंकि मुझे नहीं पता था कि REST API को काम करने के लिए Permalink की आवश्यकता होगी, मैं प्रारंभिक सेटअप के दौरान छोड़ दिया गया AllowOverride Allथा, के <Directory "/var/www/html">अनुभाग में सेट करने के लिए कदम /etc/httpd/conf/httpd.conf। इसलिए यह मेरे बदलावों को नजरअंदाज कर रहा था .htaccess। अब PLain के अलावा एक पर्मलिंक के साथ, REST API एंडपॉइंट काम करता है।
पेप

11

मैंने यह भी सोचा था कि REST API को अक्षम किया गया था, लेकिन मुझे URL द्वारा धोखा दिया गया था। सही URL देखने के लिए कुछ इस तरह की लाइन की तलाश करें:

लिंक rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' /> तो, http: // mysite का उपयोग करते हुए ? Rest_route = / जैसा कि उपसर्ग ने मेरी समस्या को हल किया है। उदाहरण के लिए पदों को पुनर्प्राप्त करने के लिए टाइप करना पर्याप्त है: http: // mysite; rest_route = / wp / json

मैं उस दस्तावेज पर नहीं मिल सका, जो क्वेरी परम की जरूरत थी। क्या मैं अकेला था?


मेरे लिए वर्डप्रेस 4.8.x के साथ काम किया। यकीन नहीं क्यों यह कहीं भी प्रलेखित नहीं है।
अनिरुद्ध

2
केवल एक ही नहीं। केवल 10min खोज के बाद आपकी टिप्पणी में यह उत्तर मिला। करने की आवश्यकता:www.example.com?rest_route=/wp/v2/posts
यूजीन के

3
मुझे लगता है कि यह तब होता है जब सुंदर permalinks सक्षम नहीं होते हैं। से डॉक्स ... "सुंदर पर्मालिंक्स बिना साइटों पर, मार्ग के बजाय rest_route पैरामीटर के रूप में यूआरएल के लिए जोड़ा जाता है। इसके बाद के संस्करण उदाहरण के लिए, पूर्ण URL तो होगा example.com/?rest_route=/wp/v2/posts / 123 "
जाइल्स बटलर


1

मैं देख रहा हूं कि आपने इस मुद्दे को ठीक कर दिया है, लेकिन मेरे समाधान को यहां छोड़ दिया क्योंकि यह मेरे लिए भी काम करता है। मेरे पास यही मुद्दा था जब बीटा 4.7 से कोर एप्टी में wp 4.7 में अपडेट किया गया था। मुद्दा यह था कि मेरे पास कुछ प्लगइन्स थे जो कि एक डिप्रेस्ड फंक्शन register_api_field का उपयोग कर रहे थे जिसे मैंने बदल कर register_rest_field के अनुसार चैंज में नोट किया:

BREAKING CHANGE: register_api_field () से register_rest_field () का नाम बदलें।

एक रजिस्टर_पाइ_फील्ड () फंक्शन फॉर बैकवर्ड कम्प्रैसर पेश करता है, जिसे _doing_it_wrong () कहते हैं। हालांकि, register_api_field () कभी भी वर्डप्रेस कोर के लिए प्रतिबद्ध नहीं होगा, इसलिए आपको अपने फ़ंक्शन कॉल को अपडेट करना चाहिए।


1

यदि REST API आउट-ऑफ-बॉक्स या किसी नए इंस्टॉलेशन के बाद और टाइप करने के बाद काम नहीं कर रहा है

mydomain/wp-json/wp/v2/posts 

इसके बाद आपको अपने "permalinks" को पोस्ट_नाम के रूप में सक्रिय करने की आवश्यकता होगी:

WP डैशबोर्ड-> सेटिंग्स-> पेरालिंक्स

या यदि आप पर्मलिंक्स को सक्रिय नहीं करना चाहते हैं, तो आप बस टाइप कर सकते हैं:

mydomain?rest_route=/wp/v2/posts

यार, काश वर्डप्रेस अपनी रेस्ट हैंडबुक को और अधिक उपयोगकर्ता के अनुकूल बनाता। मुझे डॉक्स का पुराना संस्करण पसंद है :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.