WP REST API Có dễ dàng đổi tên phần uri wp-json mặc định không?


8

API WP REST hiển thị rất nhiều thông tin vì vậy tôi lọc các điểm cuối không cần thiết phải phơi bày.

Tôi không thể lọc mọi thứ: Chẳng hạn, vị trí của các tệp phương tiện cần thiết được hiển thị.

Như một sự bảo vệ bổ sung, tôi muốn làm bí ẩn uri mặc định.

Tôi muốn thay đổi ví dụ: http://example.com/wp-json/wp/v2/để http://example.com/mistified/wp/v2/

Đây có phải là khá dễ dàng có thể?


Để bảo vệ? URL sẽ vẫn hiển thị trong ĐẦU của bạn, điều đó có nghĩa là bất kỳ ai cũng có thể nhìn thấy nó trong nguồn của bạn. Và không gian tên sẽ tự động hiển thị tất cả các điểm cuối có sẵn của bạn. Xem v2.wp-api.org/guide/discovery
jgraup

Các yêu cầu không phải api sẽ được chuyển hướng đến một url bên ngoài nơi ứng dụng frontend tồn tại. Vì vậy, tôi không nghĩ rằng nó sẽ hiển thị trong ĐẦU ở đó. Tôi đã lọc ra tất cả các điểm cuối mặc định bao gồm /wp/v2. Chỉ có các loại bài tùy chỉnh được tiếp xúc bây giờ. Và dĩ nhiên là tiền tố `wp-json '.
violacase

Bạn đã bao giờ tìm thấy một giải pháp cho điều này không hoạt động @violacase?
rorymorris89

Câu trả lời:


8

Xin lưu ý rằng đối với các phiên bản hiện tại của WordPress, sử dụng json_url_prefixbộ lọc không còn hoạt động.

Trên WordPress 4.7 (và sử dụng API REST từ lõi thay vì plugin), đây là những gì tôi cần để thay đổi tiền tố API.

add_filter( 'rest_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { return 'api'; }

Nếu điều này không hoạt động ngay lập tức, bạn sẽ cần phải xóa các quy tắc viết lại. Bạn có thể chạy đoạn mã này một lần để làm như vậy (đừng để nó trong mã của bạn để nó chạy mọi lúc):

flush_rewrite_rules(true);

Ngoài ra, bạn có thể tạo một quy trình bằng cách sử dụng php để cuộn tròn đến một điểm cuối cũ nhất định, kiểm tra xem liệu nó có còn hoạt động không, đó là thời gian của bạn flush_rewrite_rules(true);nhưng nếu phản hồi curl nói rằng apihiện đang hoạt động, bạn không còn cần phải xóa
Abel Melquiades Callejo

0

Bạn có thể sử dụng json_url_prefixhook để xóa 'wp-json'trên tất cả các tuyến API. Ví dụ dưới đây sẽ làm ví dụ trong câu hỏi của bạn:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}

Tôi không thể làm việc này. Có lẽ một vấn đề phản xạ?
violacase
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.