WP REST API重命名默认的wp-json uri部分是否相当容易?


8

WP REST API公开了很多信息,因此我过滤了不需要公开的端点。

我无法过滤所有内容:例如,所需媒体文件的位置已公开。

作为一项额外的保护,我想神秘化默认的uri。

我想改变,例如:http://example.com/wp-json/wp/v2/http://example.com/mistified/wp/v2/

这很容易吗?


为了保护?该URL仍将在您的HEAD中可见,这意味着任何人都可以在您的源代码中看到它。并且名称空间应自动显示所有可用的端点。参见v2.wp-api.org/guide/discovery
jgraup

非API请求将被重定向到前端应用程序所在的外部URL。因此,我认为它不会显示在HEAD中。我过滤了所有默认端点,包括/wp/v2。现在仅公开自定义帖子类型。当然还有“ wp-json”前缀。
violacase

您是否找到解决此问题的解决方案@violacase?
rorymorris89

Answers:


8

请注意,对于当前版本的WordPress,json_url_prefix不再使用过滤器。

在WordPress 4.7上(并使用核心的REST API而不是插件),这就是我需要更改API前缀的方法。

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

如果这不能立即生效,则需要刷新重写规则。您可以一次运行这段代码(不要将其留在您的代码中,因此每次都可以运行):

flush_rewrite_rules(true);

此外,您可以通过使用php卷曲到某个旧端点来创建一个过程,检查是否仍在工作,那是时候了,flush_rewrite_rules(true);但是如果curl响应表明那个api现在正在工作,则不再需要刷新
亚伯·梅尔奎德斯·卡雷霍

0

您可以使用该json_url_prefix钩子删除'wp-json'所有API路由。以下示例将解决您的问题:

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

我无法使它正常工作。也许是刷新问题?
violacase
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.