WordPressの/wp-json/を変更したい

 セキュリティ的な理由で/wp-json/へのアクセスは完全ブロックしている。
だけど、AMPプラグインがREST APIを使うようになっているので管理画面で不具合が起きる。

そこでデフォルトのエンドポイントである「/wp-json/」から変更したときの覚書。

環境: Nginx 1.18.0, PHP 7.4.14, WordPress 5.6


REST APIのエンドポイントを変更

参考

エンドポイントを決定しているのはwp-includes/rest-api.phpのrest_get_url_prefix関数。

ここのapply_filtersにフックして変更すればOK

function func_rest_url_prefix( $slug ) {

flush_rewrite_rules();

return 'api';

}

add_filter( 'rest_url_prefix', 'func_rest_url_prefix');


「flush_rewrite_rules」しないと変更完了しないので注意。
apiやrest-apiなど一般的な名前だと狙われるのでよく考えて決めた方がいい。


※ flush_rewrite_rules()は毎回実行されるので遅くなる。書いてはダメ。

参考: WordPressのUPDATE wp_optionsが遅い? → flush_rewrite_rulesが原因


【関連記事】