API REST của Wordpress có được cài đặt và kích hoạt trong bản cài đặt Wordpress 4.7 không?


29

Tôi vừa cài đặt Wordpress 4.7. Một trong những đề cập trong thông báo là nó có API REST.

Hiểu biết của tôi là:

  • Plugin API Wordpress không còn cần thiết nữa, vì giả sử nó đã được hợp nhất với lõi trong Wordpress 4.7.
  • API REST của Wordpress được bật theo mặc định

Tuy nhiên, tôi nhận thấy rằng trong bản cài đặt Wordilla 4.7, không có điểm cuối nào có vẻ hoạt động (ví dụ http://examples.com/wp-json/wp/v2/posts).

Làm cách nào để biết API REST mới thực sự được kích hoạt? API REST có thể được bật hoặc tắt với giao diện người dùng Wordpress vanilla hay tôi nên cài đặt plugin của bên thứ ba để làm như vậy?


1
Có thẻ khám phá trong nguồn trang? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Có vẻ như chỉ làm việc trên các trang web của tôi.
Hết

@Rarst, nếu tôi grep -r "<link rel='https://api.w.org/'" .trong htmlthư mục, nó sẽ trả về một lần truy cập trong tệp ./wp-includes/rest-api.phpcó văn bản này:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

Không phải trong mã nguồn của bạn , trong nguồn HTML của một trang từ trang web của bạn trong trình duyệt.
Hết

1
@Rarst, vâng tôi thấy<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

Điều gì mở liên kết trong trình duyệt giúp bạn? Với WP_DEBUG được kích hoạt?
Hết

Câu trả lời:


21

4.7 được bật theo mặc định. Cách dễ dàng để kiểm tra xem nó có hoạt động hay không chỉ là truy cập url example.com/wp-json và bạn sẽ nhận được một danh sách các điểm cuối đã đăng ký ở đó

Không có tùy chọn chính thức để vô hiệu hóa nó (ít nhất là có một cuộc nói chuyện về nó không chắc chắn nếu nó có trong bản phát hành), một số chức năng cốt lõi phụ thuộc vào nó.

Điều rõ ràng nhất để kiểm tra nếu nó không hoạt động là các quy tắc htaccess của bạn và bạn có thư mục wp-json không


Tôi không có /var/www/htmlthư mục wp-json bên dưới hoặc thư mục con của nó. Tôi dường như không có một .htaccesstập tin nào (ngoài /var/www/html/wp-content/plugins/akismet/.htaccess, tôi có nên có một tập tin không?
Pep

@Pep, bạn sử dụng máy chủ web nào? Bạn có permalinks đẹp không?
Đánh dấu Kaplun

Apache. Tôi đã làm theo chính xác các bước trong các hướng dẫn này để cài đặt Wordpress 4.7 trên AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.htmldocs.aws.amazon.com/AWSEC2/latest/UserGuide/,
Pep

không quen thuộc với AWS nhưng nếu bạn đã cài đặt một wordpress vanilla, bạn nên có một .htaccess ở gốc cài đặt của bạn. Nếu không thử chuyển sang cài đặt> permalinks, hãy đảm bảo bạn không ở cài đặt đơn giản, lưu và sau đó kiểm tra xem htaccess đã được tạo chưa
Đánh dấu Kaplun

6
Tôi tìm thấy cuối cùng vấn đề. Vì tôi không biết rằng Permalink sẽ được yêu cầu để API REST hoạt động, tôi đã bỏ qua trong quá trình thiết lập ban đầu, bước cần thiết lập AllowOverride Alltrong <Directory "/var/www/html">phần của /etc/httpd/conf/httpd.conf. Đó là lý do tại sao nó đã bỏ qua những thay đổi của tôi .htaccess. Bây giờ với một permalink khác với PLain, các điểm cuối API REST hoạt động.
Pep

11

Tôi đã có 4.7 cũng nghĩ rằng API REST đã bị vô hiệu hóa, nhưng tôi đã bị lừa bởi URL. Để xem URL chính xác, hãy tìm một dòng giống như thế:

liên kết rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />. Vì vậy, sử dụng http: // mysite? Rest_route = / làm tiền tố giải quyết vấn đề của tôi. Chẳng hạn, để khôi phục các bài đăng là đủ để gõ: http: // mysite? Rest_route = / wp / json

Tôi không thể tìm thấy trên tài liệu rằng tham số param là cần thiết. Tôi có phải là người duy nhất không?


Làm việc cho tôi với wordpress 4.8.x Không chắc tại sao điều này không được ghi lại ở bất cứ đâu.
Anirudha

2
Không phải là người duy nhất. Chỉ tìm thấy câu trả lời này trong bình luận của bạn sau 10 phút tìm kiếm. Cần phải làm:www.example.com?rest_route=/wp/v2/posts
Eugene K

3
Tôi nghĩ điều này xảy ra khi permalinks đẹp không được kích hoạt. Từ các tài liệu ... "Trên các trang web không có permalinks, thay vào đó, tuyến đường được thêm vào URL dưới dạng tham số rest_route. Ví dụ trên, URL đầy đủ sau đó sẽ là example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler


1

Tôi thấy bạn đã khắc phục vấn đề nhưng để lại giải pháp của tôi ở đây vì nó cũng hiệu quả với tôi. Tôi đã gặp vấn đề tương tự khi cập nhật từ beta15 lên api lõi trong wp 4.7 Hóa ra vấn đề là tôi có một số plugin đang sử dụng hàm register_api_field không dùng nữa mà tôi đã đổi thành register_rest_field theo ghi chú này trong thay đổi:

THAY ĐỔI THAY ĐỔI: Đổi tên register_api_field () thành register_rest_field ().

Giới thiệu hàm register_api_field () cho compat ngược, gọi _doing_it_wrong (). Tuy nhiên, register_api_field () sẽ không bao giờ được cam kết với lõi WordPress, vì vậy bạn nên cập nhật các lệnh gọi hàm của mình.


1

Nếu API REST không hoạt động ngoài hộp hoặc sau khi cài đặt mới và sau khi nhập

mydomain/wp-json/wp/v2/posts 

sau đó, bạn chỉ cần kích hoạt "permalinks" của mình dưới dạng post_name:

Bảng điều khiển WP-> Cài đặt-> Permalinks

Hoặc nếu bạn không muốn kích hoạt permalinks, bạn chỉ cần gõ:

mydomain?rest_route=/wp/v2/posts

Man, tôi ước WordPress sẽ cập nhật cẩm nang Rest của họ để thân thiện hơn với người dùng. Tôi thích phiên bản cũ của tài liệu :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.