Intereting Posts
Проверьте, является ли первый абзац изображением, а затем отображает пользовательский код сразу после него? Пользовательские возможности пользовательской почты Wp не работают togather Echo список всех идентификаторов пользователя абонента Получение ссылки ниже нижнего колонтитула – хотите удалить ее. Как? Сравните «Основной» идентификатор сообщения с идентификатором внутри цикла wp_query Класс css_author_posts_link Как получить сообщение по имени slug через REST API? Можно ли добавлять страницы в свое меню через скрипт? WP Multisite Static Frontpage Разрешить только 1 экземпляр каждого термина в каждой пользовательской таксономии Проблемы с пользовательскими таксономиями Не удалось получить контент из $ post при первом опубликовании Как wp_redirect на «init» hook при условии текущего идентификатора сообщения? Мой сайт WordPress использует локальный ip для указания на jquery и другие файлы, как его исправить? Форматирование фрагментов кода на бесплатной учетной записи WordPress.com?

Могу ли я использовать init hook для использования API?

Название вопроса может быть немного путаным. Вот сценарий. Например: я предоставляю службу API с моего сайта wordpress.

Используя это, другие могут знать немного информации. Например, если они отправят идентификатор пользователя в URL-адрес запроса, я отправлю им номер телефона пользователя.

Например: если они обращаются к сайту с помощью www.example.com/?cuid=23

Теперь при cuid init я проверю, присутствует ли cuid в переменной $_GET , если он присутствует, тогда я получу номер телефона и умлю функцию с номером телефона. Поскольку init hook является самым ранним крюком, я решил использовать его.

 function tell_phone_num(){ if(isset($_GET['cuid'])){ //some one wants the service //I'll get the phone number and show it -> $user_phone //setting response format, like json etc die($user_phone); } } add_action('init','tell_phone_num'); 

Это прекрасно работает. Когда сайт будет доступен с помощью cuid тогда будет работать только эта функция.

Это всего лишь пример, но номер телефона не является моей реальной информацией. Мне не нужна аутентификация, потому что информация, которую я предоставляю, не чувствительна.

Вот мой вопрос. Это правильный способ сделать или я должен сделать другой метод лучшей практики.

Solutions Collecting From Web of "Могу ли я использовать init hook для использования API?"

Если вам нужна более удобная структура URL-адресов, вы можете добавить конечную точку перезаписи .

Это добавит правила и запросы перехвата в /my-api/ :

 function wpd_add_api_endpoint() { add_rewrite_endpoint( 'my-api', EP_ROOT ); } add_action( 'init', 'wpd_add_api_endpoint' ); function wpd_api_request( $request ){ if( isset( $request->query_vars['my-api'] ) ){ // $request->query_vars['my-api'] is a string containing everything after your url slug // convert it to array $parts = explode( '/', $request->query_vars['my-api'] ); echo '<pre>'; print_r( $parts ); echo '</pre>'; die; } } add_action( 'parse_request', 'wpd_api_request' ); 

После того, как вы сбросите правила, попробуйте выполнить запрос:

http://example.com/my-api/something/else/123/4,5,6/&7

Что будет выводить:

 Array ( [0] => something [1] => else [2] => 123 [3] => 4,5,6 [4] => &7 ) 

Да, init подходит для этой цели. В кодексе написано:

init полезен для перехвата триггеров $ _GET или $ _POST.