WP REST API Легко ли переименовать стандартную часть wp-json uri?

8

WP REST API предоставляет много информации, поэтому я фильтрую конечные точки, которые не нужны для показа.

Я не могу отфильтровать все: расположение необходимых медиафайлов, например.

В качестве дополнительной защиты я хотел бы мистифицировать URI по умолчанию.

Я хотел бы изменить, например: http://example.com/wp-json/wp/v2/для http://example.com/mistified/wp/v2/

Это довольно легко возможно?

violacase
источник
Для защиты? URL будет по-прежнему виден в вашей голове, что означает, что любой может увидеть его в вашем источнике. И пространство имен должно автоматически показывать все ваши доступные конечные точки. См. V2.wp-api.org/guide/discovery
jgraup
Не-API-запросы будут перенаправлены на внешний URL-адрес, где живет приложение внешнего интерфейса. Так что я не думаю, что это будет показано в ГОЛОВЕ там. Я отфильтровал все конечные точки по умолчанию, включая /wp/v2. Теперь доступны только пользовательские типы сообщений. И, конечно же, префикс `wp-json '.
виолончель
Вы когда-нибудь находили решение этого не работающего @violacase?
rorymorris89

Ответы:

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);
rorymorris89
источник
Кроме того, вы можете создать процедуру, используя php для скручивания до определенной старой конечной точки, проверьте, работает ли она по-прежнему, тогда вам пора, flush_rewrite_rules(true);но если в ответе скручивания говорится, что 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';
}
Дан.
источник
Я не могу заставить это работать. Возможно, проблема с переполнением?
скрипка