Wordpress Rest-Api 自定义修改 wp-json 路由

Wordpress Rest-Api 提供了一个钩子 rest_url_prefix 可自定义修改 wp-json 路由,比如将默认的 wp-json 变更为 api。

Rest-Api 路由示例

默认路由示例

https://yangjunwei.com/wp-json/wp/v2/posts/1

新路由示例

如下都以 wp-json 修改为 api 为例。

https://yangjunwei.com/api/wp/v2/posts/1

Rest-Api 路由修改

Wordpress 提供了一个钩子来修改 wp-json 地址,代码如下

function yjw_set_rest_api_prefix(){
	return 'api';
}
add_filter('rest_url_prefix', 'yjw_set_rest_api_prefix');

将上述代码放到主题目录 functions.php 文件中,记得前往 WordPress [后台-设置-固定链接] 中点击保存设置,使得 WordPress 刷新固定链接,新路由才会生效。

还有另一个方法,只是不推荐

/**
 * REST API路由,wp-json路由别名(/api)
 * @param   object  $wp_rewrite  WP_Rewrite
 * @return  void
 */
function yjw_handle_api_rewrite_rules($wp_rewrite){
	if( $ps = get_option('permalink_structure') ){
		$new_rules = array();
		$new_rules['^api/?$'] = 'index.php?rest_route=/';
		$new_rules['^api/(.*)?'] = 'index.php?rest_route=/$matches[1]';
		$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
	}
}
add_action('generate_rewrite_rules', 'yjw_handle_api_rewrite_rules'); //可直接用 `rest_url_prefix` 更改wp-json至api